メニューにチェックボックスのあるSherlockActionBarのMenuItemがありますが、デバイスを回転させてもチェックボックスはアクティブですが、ラベルの右側のアイコンがオフになっています。
私が達成したいのは、デバイスを回転させた後、そのボックスが再びチェックされていることを示すことです。
これまで、SharedPreferences、フラグを使用して修正し、「Menu」(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);
}
編集:これらは私が使用している種類のチェックボックスであり、手動でアイコンを設定していません。
EDIT2:
OK、それでandroid:configChanges="orientation|screenSize"
うまくいくように見えますが、横向きモードのレイアウトの使用を停止し、代わりにデフォルトのレイアウトを使用します。そしてandroid:configChanges="orientation"
「screenSize」なしでは何もしません。
Edit3:
恥知らずなオートバンプ。私はまだ立ち往生しています。:(