76

メニュー項目「更新」を使用ActivityCompat.invalidateOptionsMenu(MainActivity.this);せずに自動的に有効/無効にできるように使用しました(ユーザーがメニューを開いたままにしておくと想像してください...「更新」メニュー項目を自動的に無効にする必要があります。自分自身を有効にします)。

ActivityCompat.invalidateOptionsMenu(MainActivity.this)Android11以降では正常に動作します。しかし、Android API <11には何を使用できますか?:Sたくさん検索しましたが、答えが見つかりません。誰かがこれについて私を助けてくれますか?

これは、Android API 11以降で、onPrepareOptionsMenuとを使用して正常に機能しますActivityCompat.invalidateOptionsMenu(MainActivity.this)。問題は、AndroidAPI<11でそれを実行しようとしています。

これが私のonPrepareOptionsMenu方法です:

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    if(menuRefreshEnable){
        menu.getItem(0).setEnabled(true);
    }
    if(!menuRefreshEnable){
        menu.getItem(0).setEnabled(false);
    }       
    return true;
}
4

3 に答える 3

231

使用API < 11方法supportInvalidateOptionsMenu()について

于 2013-08-31T10:27:37.580 に答える
5

ActivityCompat.invalidateOptionsMenu()onPrepareOptionsMenu();メニューを直接更新するだけでコールバックしません。いくつか入れLog.d()て、自分でチェックしてください。

これは私にとってはうまくいきます(私はAPI 8を使用しています):

private Menu mMenu;
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.track_fragment, menu);
    mMenu = menu;
    }
...
private void someMethod() {
...
    if (mMenu != null) {
       MenuItem item = mMenu.findItem(R.id.new_track);
       if (item != null) {
            item.setVisible(false);
            ActivityCompat.invalidateOptionsMenu(this.getActivity());
        }
    }
...
}

someMethod()以前から何度か電話がかかってきonCreateOptionsMenu()たので、確認する必要がありmMenu != nullます。

于 2014-01-19T09:54:31.763 に答える
0

APIが11以上でサポートされている場合、これはtrueを返します。API 11より前では、メニューボタンが押されたときにメニューが描画されるため、このメソッドは自動的に実行されるため、このメソッドは必要ありません。

于 2012-12-23T04:15:01.307 に答える