안드로이드 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);
}
댓글 입력