簡體   English   中英

使用SharedPreferences保存ToggleButton的狀態

[英]Save the state of a ToggleButton using SharedPreferences

我見過其他類似的問題,但沒有一個正在解決! 我有一個切換按鈕。 我想保存ToggleButton的狀態(選中是true還是false),即使應用程序已關閉/重新打開也是如此。

我的代碼如下所示,但無法運行

公共類MainActivity擴展了AppCompatActivity {

    ToggleButton toggle1 = (ToggleButton) findViewById(R.id.toggle1);

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}
private void savePreference(Context context)
{
    SharedPreferences.Editor editor = context.getSharedPreferences("toggleState1", 0).edit();
    editor.putBoolean("toggleState1", toggle1.isChecked());
    editor.commit();
}

private void loadPreference (Context context)
{
    SharedPreferences prefs = context.getSharedPreferences("toggleState1", 0);
    toggle1.setChecked(prefs.getBoolean("toggleState1", false));
}};

謝謝您的幫助!

ToggleButton toggle1 = (ToggleButton) findViewById(R.id.toggle1);

應該在INSIDE onCreate() ,使其成為最后一條語句。

而且,它更容易使用

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);

好了,我有答案供將來參考。 我最初的嘗試未正確使用共享首選項。 您必須為共享首選項對象創建一個“鍵”和一個“名稱”。 然后按如下所示在代碼中調用它:

公共類MainActivity擴展了AppCompatActivity {

private static final String APP_SHARED_PREFERENCE_NAME = "AppSharedPref";
private final static String TOGGLE_STATE_KEY1 = "TB_KEY1";
ToggleButton toggle1;
SharedPreferences sharedPreferences;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    sharedPreferences = getSharedPreferences(APP_SHARED_PREFERENCE_NAME, Context.MODE_PRIVATE);
    toggle1 = (ToggleButton) findViewById(R.id.toggle1);
    toggle1.setChecked(GetState());
    toggle1.setOnCheckedChangeListener(new OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton arg0, boolean isChecked) {
            SaveState(isChecked);
        }
    });
}

private void SaveState(boolean isChecked) {
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putBoolean(TOGGLE_STATE_KEY1, isChecked);
    editor.commit();
}

public boolean GetState() {
    return sharedPreferences.getBoolean(TOGGLE_STATE_KEY1, false);
}

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM