我希望PreferenceActivity中所做的任何更改都不會被保存,除非用戶按下我添加到ActionBar的「完成」按鈕,所以,如果按下返回按鈕,更改將不會應用,並且開關將變回他們以前的價值。如果用戶按R.id.home或後退按鈕,如何放棄PreferenceActivity中的更改?
UPDATE:
根據@Ravindra Kushwaha建議,我闡述了以下代碼:
boolean push_switch, push_on, push_off, push_stats;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setupActionBar();
push_switch = PreferenceManager.getDefaultSharedPreferences(this).getBoolean("push_switch", true);
push_on = PreferenceManager.getDefaultSharedPreferences(this).getBoolean("push_on", true);
push_off = PreferenceManager.getDefaultSharedPreferences(this).getBoolean("push_off", true);
push_stats = PreferenceManager.getDefaultSharedPreferences(this).getBoolean("push_stats", true);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch(id)
{
case android.R.id.home:
onBackPressed();
return true;
case 1000: // Done button
finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public void onBackPressed() {
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("push_switch", push_switch);
editor.putBoolean("push_on", push_on);
editor.putBoolean("push_off", push_off);
editor.putBoolean("push_stats", push_stats);
editor.apply();
finish();
}
這似乎如預期,並符合我的預期工作,但。 ..
這是做它的正確方法還是不建議在y方面?我發現它很奇怪......讓android自行應用更改並手動還原它們,如果按回來,則再次應用上一個...
我認爲如果我是應用更改的人會更容易如果按下完成,則只有。
我不知道關於要嘗試的內容......開關值似乎存儲在應用程序配置中,在我切換它們的正確時刻。 –
它的邏輯宏...你必須維護五個變量,它們包含的值就像它們被點擊或不在...完成按鈕點擊,你必須從這5個變量中獲得值並將它保存到你的共享偏好.. ot Dost –
真的嗎?我記住了這一點,但我認爲如果按下後退按鈕,SDK中會有一個首選項或某些東西來恢復更改,我的意思是,後退按鈕=取消更改...好吧,所以我必須手動執行此操作,對? –