마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

SharedPreferences가 제대로 작동하지 않습니다

0 추천

체크박스가 체크 되었을 때 num과 체크값은 레이아웃을 벗어난 뒤 다시 돌아와도 유지가 됩니다.

여기서 문제가 되는 건 power변수값인데, 버튼을 누를 때마다 true와 false로 변경이 되도록 설정했고

그에 따라 메시지를 띄우게끔 만들었습니다.

처음 버튼을 눌러 power==true 상태를 만든 뒤 해당 레이아웃을 벗어나면 메시지는 계속해서 뜨는데요,

문제는 다시 돌아가 버튼을 누르면 power가 true로 다시 적용되고,

이미 실행중인 메시지 기능이 계속 실행되고 있는 채로 또 메시지 기능이 중복되어 실행이 됩니다.

그런 식으로 어플에 과부하가 걸리더라구요ㅠㅠ

어느 부분이 문제일까요..?

 

@Override 
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.activity_fb); 
    
    editTextPhoneNumber = (EditText)findViewById(R.id.editTextPhoneNumber);
    Button bt_twlogin = (Button)findViewById(R.id.tw_login);
    chk_auto = (CheckBox) findViewById(R.id.chk_auto);
    
    setting = getSharedPreferences("setting", 0);
	editor= setting.edit();
	
	if(setting.getBoolean("POWER", true)){
		setting.getBoolean("POWER", true);
	}
	else{
		power = false;
	}
	
	if(setting.getBoolean("chk_auto", false)){
		editTextPhoneNumber.setText(setting.getString("NUM", ""));
		chk_auto.setChecked(true);
	}
    
    bt_twlogin.setOnClickListener(this);
    checkBluetooth();
   
  } 
  
	public void onClick(View v) {
		
		if(chk_auto.isChecked()){
			String num = editTextPhoneNumber.getText().toString();
			
			editor.putString("NUM", num);
			editor.putBoolean("chk_auto", true);
			editor.commit();
			
		}else{
			editor.clear();
			editor.commit();
		}
		
		editor.putBoolean("POWER", power);
		editor.commit();
		
		switch(v.getId()){
		
		case R.id.tw_login :
		{
			
			handler.sendEmptyMessage(0);
		     try {
		      Thread.sleep(1000);
		     } catch (InterruptedException e) {
		     }
		     
			
		}
		}
		
	}

 

익명사용자 님이 2015년 6월 1일 질문

1개의 답변

0 추천
 
editor.putBoolean("POWER", power);
editor.commit();
 
 
하기전에 power 값이 chk_auto.isChecked() 상태값으로 넣어줘야 하지 않나여?
 
 power =  chk_auto.isChecked();
editor.putBoolean("POWER", power);
editor.commit();
 
 
--------------------------------

doridori2013@nate.com

익명사용자 님이 2015년 6월 1일 답변
...