我對我的活動有一個複選框。我想知道如何在每次打開我的應用程序時使其狀態保持不變(選中/取消選中)。每次打開我的應用程序時,如何使複選框保持相同的狀態?
回答
您可以使用SharedPreferences來實現CheckBox,即使應用程序已關閉,它仍保留其狀態。
- 當用戶檢查/取消選中CheckBox.Save它的狀態在共享 首選項。
- 每當用戶打開您的活動。從 共享首選項中讀取先前保存的值,並設置複選框的狀態。
這裏是一個示例代碼來保存複選框的狀態,即使應用程序已關閉。
public class TestActivity extends Activity{
CheckBox checkBox = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
checkBox = (CheckBox) findViewById(R.id.my_check_box);
boolean isChecked = getBooleanFromPreferences("isChecked");
Log.i("start",""+isChecked);
checkBox.setChecked(isChecked);
checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton view, boolean isChecked) {
Log.i("boolean",""+isChecked);
TestActivity.this.putBooleanInPreferences(isChecked,"isChecked");
}
});
}
public void putBooleanInPreferences(boolean isChecked,String key){
SharedPreferences sharedPreferences = this.getPreferences(Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean(key, isChecked);
editor.commit();
}
public boolean getBooleanFromPreferences(String key){
SharedPreferences sharedPreferences = this.getPreferences(Activity.MODE_PRIVATE);
Boolean isChecked = sharedPreferences.getBoolean(key, false);
return isChecked;
}
}
main.xml中
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<CheckBox
android:id="@+id/my_check_box"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
checkBox.setChecked(true);
如果你想最後的狀態,簡單的寫的選中狀態,以SharedPreferences
在onPause()
方法,並在onResume()
方法得到的狀態。
參考:http://developer.android.com/reference/android/widget/CheckBox.html http://developer.android.com/reference/android/content/SharedPreferences.html
你最好的選擇是在應用程式SharedPreferences
並保存它的狀態。當您運行您的應用程序時,您可以從首選項中檢索狀態並選中/取消選中該複選框。
爲了記住應用程序的狀態,你將要使用的onSaveInstanceState()
和onRestoreInstanceState()
方法(見本answer獲取更多信息),以確定盒子應該選中或不選中...
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
savedInstanceState.putBoolean("IsCheckboxChecked", _myCheckbox.isChecked());
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
_myCheckbox.setChecked(savedInstanceState.getBoolean("IsCheckboxChecked"));
}
這是一個類似的帖子.. SO Qn您可以使用相同的想法。希望這可以幫助。
最好的辦法是使用SharedPreference。您可以使用它像這樣:
保存當前狀態sharedpreference:
SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit(); //opens the editor
editor.putBoolean("isChecked", true); //true or false
editor.commit(); //saves it in shared preference
那麼當你的活動開始,你可以在SharedPreference像這樣的檢查值:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.yourlayout);
SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
CheckBox checkBox = (CheckBox) findViewById(R.id.checkbox_id);
checkBox.setChecked(sharedPreferences.getBoolean("isChecked", false));
}
希望你可以使用這些信息
因此,對於第一個片段,我應該制定一個方法或者什麼? – hectichavana 2012-01-31 14:38:24
製作一種保存複選框狀態的方法。因此,每當用戶檢查或取消選中時,當前狀態都會保存。 然後,您可以檢查活動中的任何位置,如果最後一次已知狀態已選中或未選中。 – Fergers 2012-01-31 15:47:55
- 1. Sharedpreferences不起作用,當我關閉/打開應用程序時,複選框應該保持相同狀態
- 2. 如何保持複選框的狀態?
- 3. 如何讓應用程序保持相同的狀態?
- 4. 代碼保持我每次打開應用程序
- 5. 如何強制應用程序保持打開狀態?
- 6. 如何保持Twitter的身份驗證狀態,以避免每次打開應用程序時重新登錄
- 7. 如何在應用程序關閉並重新打開時保留文本框和複選框的狀態?
- 8. 如何使JOptionPane保持打開狀態
- 9. 更改狀態時,Radiobutton /複選框保持選中狀態
- 10. 複選框的狀態保持不變
- 11. 保持複選框的狀態angularjs
- 12. 如何保存複選框的狀態,即使應用程序關閉
- 13. 讓查詢框保持打開狀態
- 14. 當應用程序打開時,鬧鐘管理器保持開機狀態
- 15. 如何使用ddaccordian.init保持當前類別選項卡保持打開狀態?
- 16. Android:打開一個保持打開狀態的相機
- 17. ios應用程序長時間保持打開狀態變得沒有反應
- 18. 如何在AJAX響應後保留我的複選框狀態?
- 19. 更改Form2上的複選框的狀態並保持狀態
- 20. qTip保持打開狀態
- 21. 獲取複選框以保持點擊時的選中狀態
- 22. 點擊框中的jQuery應該保持打開狀態嗎?
- 23. 如何在使用返回到頁面時保持複選框禁用狀態?
- 24. 我如何使intellij android預覽窗口保持打開狀態?
- 25. 如何保持asp.net中複選框的點擊狀態
- 26. 保持默認打開復選框
- 27. 如何在退出時輕鬆保持應用程序狀態
- 28. 在多個複選框中保持複選框狀態一致
- 29. 複選框保持跨組件的狀態作出反應JS
- 30. 使顯示屏保持打開狀態
上面的代碼是否足以獲得我想要的?我應該如何將它應用到我的複選框? – hectichavana 2012-01-31 14:14:12
請參閱'_myCheckbox.setChecked'它將狀態應用於複選框。 – Leandros 2012-01-31 14:19:35
我已將這些片段應用於我的應用,但它不保存複選框'狀態 – hectichavana 2012-01-31 14:49:18