我有一個MenuItem中的MenuItem,它有一個複選框,但當我旋轉設備時,複選框仍處於活動狀態,但標籤右側的圖標未選中。在旋轉事件中保留MenuItem複選框狀態
我想實現的是顯示旋轉設備後再次檢查該框。
到目前爲止,我一直試圖用SharedPreferences,flags,將「菜單」(從onCreateOptionsMenu)存儲到一個變量並尋找id,onPrepareOptionsMenu,但沒有做我想做的事情。
我現在正在做的是將MenuItem的狀態標誌存儲在「onOptionsItemSelected」上,然後在「onPrepareOptionsMenu」上檢查標誌的值並設置檢查...但是這會導致更多的麻煩。
我不知道該怎麼做。 :(
代碼:
private boolean lockFlag;
...
@Override
public boolean onCreateOptionsMenu(Menu menu) {
this.menu = menu;
getSupportMenuInflater().inflate(R.menu.activity_main, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_lock:
if (item.isChecked()) {
item.setChecked(false);
lockFlag = false;
} else {
item.setChecked(true);
lockFlag = true;
}
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
if (lockFlag) {
menu.findItem(R.id.menu_lock).setChecked(true);
} else {
menu.findItem(R.id.menu_lock).setChecked(false);
}
return true;
}
private void savePrefs() {
getSharedPreferences("LOCKBARS", MODE_PRIVATE).edit().putBoolean("lockbars", lockFlag).commit();
}
private void loadPrefs() {
this.lockFlag = getSharedPreferences("LOCKBARS", MODE_PRIVATE).getBoolean("lockbars", false);
}
編輯: 那些是什麼樣,我使用,我沒有手動設置任何圖標複選框
編輯2:
好吧,看起來像android:configChanges="orientation|screenSize"
是伎倆,但它停止使用lay出於橫向模式,並使用defalut而不是。沒有「screenSize」的 和android:configChanges="orientation"
什麼都不做。
編輯3:
無恥的汽車顛簸。我仍然卡住。 :(
嗯......這部分幫助,看看頁面底部的新編輯。 – Deses 2013-02-14 00:16:45