我有一个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