2012-06-18 679 views
0

我想我可以簡化問題域。基本上我已經設置了偏好活動,讓按鈕設置爲打開。問題出現時,我點擊關閉,然後回到首選項,它仍然在我試圖創建一個布爾開關,但形成一些原因,它不工作。該代碼發佈如下。切換按鈕沒有正確設置

解決方案 我認爲解決方法是修復,當用戶點擊切換按鈕,並關閉它,因爲我已經在公共無效的onCreate方法來設置可點擊到真正的問題。每次用戶返回首選項活動時,該值都會設置爲開啓。我認爲覆蓋該參數的一個條件可以解決我的問題。

prefs = getSharedPreferences(prefName, 0); 

SharedPreferences.Editor editor = prefs.edit(); 

if (twitter.isChecked() == true) 
{ 
    onoffTwitter = true; 
    editor.putBoolean(TWITTER_KEY, true); 
    onoffTwitter = true; 
} 

if (twitter.isChecked() == false) 
{ 
    onoffTwitter = false; 
    editor.putBoolean(TWITTER_KEY, false); 

    onoffTwitter = false; 
} 

Toast.makeText(getBaseContext(), 
       "was the twitter checked" + twitter.isChecked(), 
       Toast.LENGTH_SHORT).show(); 

editor.commit(); 

而這段代碼是隱藏按鈕的另一個活動。

SharedPreferences prefs = getSharedPreferences(prefName, 0); 
buttonStatus = prefs.getBoolean(TWITTER_KEY, false); 
Log.e(LOGS, "What is the value for the twitter feed" + buttonStatus); 

Toast.makeText(AndroidGUIActivity.this, 
       " What is the value for the twitter feed" + buttonStatus, 
       Toast.LENGTH_SHORT).show(); 

if (buttonStatus==false) twitter.setVisibility(View.GONE); 

我相信我可以通過在xml文件中設置togglebutton的初始值來解決這個問題。

回答

0

問題是我沒有把偏好值傳遞給twitter,所以它沒有存儲這個值。

prefs = getSharedPreferences(prefName, 0); 
     buttonStatus = prefs.getBoolean(TWITTER_KEY, true); 
     Log.e(LOGS, "What is the value for the timer feed" + buttonStatus); 


     twitter.setChecked(buttonStatus);