1

メソッドでこの問題が繰り返し発生しonCreateOptionsMenuます。一部の値に応じてオプションを有効または無効にするように設定しましたSharedPreferencesが、何らかの理由で、メニューを初めて開いたときに正常に機能せず、無効にする必要があるオプションが有効になり、逆になりますその周り。閉じて再度開くと、正常に動作します。

 @Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_main, menu);
    menuConfig(menu);
    return true;
}

@Override
public boolean onPrepareOptionsMenu (Menu menu) {
    menuConfig(menu);
    return true;
}

public void menuConfig(Menu menu){
    menu.getItem(getResources().getInteger(R.integer.MENU_ABOUT)).setEnabled(true);
    if (preferences.getBoolean(getString(R.string.PREFS_STARTED), false)){
        menu.getItem(getResources().getInteger(R.integer.MENU_START)).setEnabled(false);
        menu.getItem(getResources().getInteger(R.integer.MENU_STOP)).setEnabled(true);
    }else{
        menu.getItem(getResources().getInteger(R.integer.MENU_START)).setEnabled(true);
        menu.getItem(getResources().getInteger(R.integer.MENU_STOP)).setEnabled(false);
    }
    if(!preferences.getBoolean(getString(R.string.PREFS_STARTED),false) && preferences.getBoolean(getString(R.string.PREFS_FILES_CREATED),false)){
        menu.getItem(getResources().getInteger(R.integer.MENU_DELETE)).setEnabled(true);
        menu.getItem(getResources().getInteger(R.integer.MENU_SET_ID)).setEnabled(true);
    }
    else{
        menu.getItem(getResources().getInteger(R.integer.MENU_DELETE)).setEnabled(false);
        menu.getItem(getResources().getInteger(R.integer.MENU_SET_ID)).setEnabled(false);
    }
}

これらの 2 つの写真は、メニュー キーを押すたびに数秒間隔で連続して撮影されます。 最初のメニュー キーの押し方が間違っています 2 番目のメニュー キーを押すと、RIGHT

最初のものは間違っています。2 番目のもののように見えるはずです。

4

1 に答える 1

0

クエリによって返されるデフォルト値をSharedPreferencesオブジェクトに変更することで修正しましたが、実際に何が起こっているのかわかりません。

于 2012-11-06T09:39:45.280 に答える