안드로이드 Shared Preferences이용하여 버튼 ON,OFF 각각 상태를 저장하고 싶어요.

조회수 966회

ON | OFF

2가지 버튼을 누르면 ON , OFF 각각 버튼의 텍스트색상과 배경색을 바꿔주고 있습니다.

현재 앱 처음을 체크하여 처음 체크시에는 버튼색상 초기화 다음 앱 실행에서는 boolean isPush값에 따라 처리합니다. onStop에서 push키값으로 상태를 저장합니다.

질문 드리고 싶은 것은 ON버튼을 누르면 ON이 눌려저있고 OFF를 누르면 OFF가 눌려져 있는건데 제일 상단에서 boolean값으로 기본이 false여서 계속 OFF쪽만 버튼색상이 바뀌는데

제 생각으로 isPush 제어문 안에서 true면 isPush=false로 false면 isPush=true;로 값을 변경하면 잘 될 것 같은데 동작이 꼬이네요.

아래는 소스코드입니다.

public  NextActivity mActivity;

private TextView text_on;

private TextView text_off;

private static final String first = "first";

private boolean isFirst;

private static final String push = "push";

public boolean isPush;





@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_next);
    mActivity=this;
    text_on = (TextView)findViewById(R.id.text_on);
    text_off = (TextView)findViewById(R.id.text_off);


    SharedPreferences sh1 = getSharedPreferences(first,MODE_PRIVATE);
    isFirst = sh1.getBoolean("first",false);

    SharedPreferences sh = getSharedPreferences(push,MODE_PRIVATE);
    isPush = sh.getBoolean("push",false);
    Event();
    SH();
}

private void SH(){

    if (isFirst){

        text_on.setTextColor(Color.parseColor("#DB3163"));
        text_on.setBackgroundColor(Color.parseColor("#EAEAEA"));
        text_off.setTextColor(Color.parseColor("#DB3163"));
        text_off.setBackgroundColor(Color.parseColor("#EAEAEA"));

    }else{

        if (isPush){

            text_on.setTextColor(Color.parseColor("#FFFFFF"));
            text_on.setBackgroundColor(Color.parseColor("#DB3163"));
            text_off.setTextColor(Color.parseColor("#DB3163"));
            text_off.setBackgroundColor(Color.parseColor("#EAEAEA"));
            isPush=false;
        }else {

            text_off.setTextColor(Color.parseColor("#FFFFFF"));
            text_off.setBackgroundColor(Color.parseColor("#DB3163"));
            text_on.setTextColor(Color.parseColor("#DB3163"));
            text_on.setBackgroundColor(Color.parseColor("#EAEAEA"));
            isPush=true;
        }



    }



}

private void Event(){

    text_on.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            text_on.setTextColor(Color.parseColor("#FFFFFF"));
            text_on.setBackgroundColor(Color.parseColor("#DB3163"));
            text_off.setTextColor(Color.parseColor("#DB3163"));
            text_off.setBackgroundColor(Color.parseColor("#EAEAEA"));

        }
    });

    text_off.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            text_off.setTextColor(Color.parseColor("#FFFFFF"));
            text_off.setBackgroundColor(Color.parseColor("#DB3163"));
            text_on.setTextColor(Color.parseColor("#DB3163"));
            text_on.setBackgroundColor(Color.parseColor("#EAEAEA"));

        }
    });
}


@Override
protected void onStop() {
    super.onStop();
    SharedPreferences sh1 = getSharedPreferences(first, MODE_PRIVATE);
    sh1.edit().putBoolean("first", true);

    SharedPreferences sh = getSharedPreferences(push, MODE_PRIVATE);
    sh.edit().putBoolean("push", true);

}

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)