2014-05-16 33 views
0

我有5個複選框,當他們被點擊時,他們使用onCheckedChangeListener在抽象類中將布爾值設置爲true或false。例如:安卓保存複選框的狀態,如果退出應用程序

checkbox.setOnCheckedChangeListener(new OnCheckedChangeListener(){ 

      @Override 
      public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) 
      { 
       if(isChecked) 
       { 
        CheckboxData.checked = true; 
       } 
       else if(!isChecked) 
       { 
        CheckboxData.checked = false; 
       } 

      } 

     }); 

但是,當我離開應用程序並返回複選框不再點擊,但布爾值仍然是true。我該如何讓應用程序記住點擊複選框?我應該只檢查主活動onCreate中的布爾值並將複選框設置爲選中狀態,或者是否有更好/更快的方式讓應用程序記住複選框狀態?

在主要活動剛剛加入這個onCreate方法:

 if(CheckboxData.checked) 
    { 
     CheckBox checkbox = (CheckBox) findViewById(R.id.checkbox); 
     checkbox.setChecked(true); 
    } 

但它確實沒有什麼

+0

你需要調用setChecked(your_boolean)中的onCreate() – Sripathi

+0

是,在每次主被叫活動的onCreate你打開應用程序複選框狀態? – user3633941

+0

是的..請參考下面的鏈接更多關於Android生命週期 http://www.vogella.com/tutorials/AndroidLifeCycle/article.html – Sripathi

回答

1

Activity得到destroyed選中該複選框狀態,如果爲真,並在shared Preference

添加複選框狀態
 @Override 
    public void onDestroy() { 

    if(CheckboxData.checked){ 
    SharedPreferences prefs = getSharedPreferences("private preference", Context.MODE_PRIVATE); 
      prefs.edit() 
       .putBoolean("CheckboxData",true) 
       .commit(); 
    } 
    super. onDestroy(); 

    } 

而且當Activity啓動回來時,在onCreate檢查優先並且如果爲真,選中複選框

SharedPreferences prefs = getSharedPreferences("private preference", Context.MODE_PRIVATE); 

    boolean isChecked = prefs.getBoolean("CheckboxData",false); 
    if(isChecked) 
    checkBoxView.setChecked(true) 
+0

謝謝,但我如何確保onCheckedChangeListener只添加一次,我假設當我再次打開該活動時,它會添加另一個偵聽器,使其成爲兩個? – user3633941

+0

當Activity被破壞時,監聽器被取消。所以不要擔心。它將只有一個實例 – Libin

+0

@Libin - 根據Activity生命週期說明,onDestroy可能不會被調用;預蜂窩僅'onPause'被保證;最近'onStop'是有保證的。在http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle之後查看哪些方法在表格中標記爲「killable」。該系統被允許在殺死方法之後終止應用程序,而不調用生命週期中的其餘方法。最值得注意的是,可能無法達到onDestroy。 – ToolmakerSteve