我配置了選項菜單,其中一個項目用於在後臺啓用服務。兩個動作的一個菜單項
當動作發生時,我將項目標題從「啓用服務」更改爲「禁用服務」並相應地設置布爾值。
當應用程序關閉然後重新加載類時,問題就開始了。布爾值將被重置爲初始值。
我想知道的是:
- 什麼是使用具有不基於它的狀態不同的操作一個項目菜單中的最佳實踐。
- 將布爾值保持在最後狀態的最佳做法是什麼? (共享偏好?)
我配置了選項菜單,其中一個項目用於在後臺啓用服務。兩個動作的一個菜單項
當動作發生時,我將項目標題從「啓用服務」更改爲「禁用服務」並相應地設置布爾值。
當應用程序關閉然後重新加載類時,問題就開始了。布爾值將被重置爲初始值。
我想知道的是:
如果你想存儲的原始值那麼最好的做法是用共享偏好,則當過用戶關閉該應用程序,然後你可以存儲在共享的偏好值,那麼下一次用戶開放該應用程序可以簡單地從共享偏好中獲得價值。
通過使用單個菜單項,您可以根據從共享首選項獲取的值來處理「啓用服務」和「禁用服務」兩個操作。
謝謝大家,我最終做的是確實使用共享pref來存儲布爾值,有一件棘手的事情是,當該類被重新加載,菜單XML文件中配置的標題也被加載並且不描述真實狀態。所以我使用onprepareoptionmenu根據共享前綴中存在的布爾值設置標題。希望能幫助別人' – user2145673
1.)使用不同的圖標/名稱同時保持在相同的地方,並且彼此可區分開。例如(開/關)名稱/圖標。 2)使用共享首選項將是一條路,因爲你只存儲一個原始值。它比使用sqlite快。
我做這樣的事情 當你加載你的活動..
SharedPreferences sharedPreferences;
static int currentAction;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_setting);
SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences("MyAction", Context.MODE_PRIVATE);
if (sharedPreferences.getInt("Action", 0) == 0) { // 0 for Enable Service
// set menu as Enable
currentAction = 0;
} else { // 1 for Disable service
// set menu as Disable
currentAction = 1;
}
}
,當你點擊菜單項,然後..
if (currentAction == 0) {
//Do Action for Enable and change Action
currentAction = 1;
} else {
//Do Action for Disable and change Action
currentAction = 1;
}
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt("Action", currentAction);
editor.commit();
}
希望它的幫助... !!
是的,你在'preferences'中保存'boolean'並且每次檢查並更新它的值。 – Yurets
您應該使用Shared Prefs。 –
而不是字幕更改按鈕,使用開關「Awsome服務狀態ON/OFF」 –