46

私のアクティビティのいくつかのメソッドでは、メニューのタイトルを確認したり、チェックされているかどうかを知りたいです。アクティビティのメニューを取得するにはどうすればよいですか。次のようなものが必要ですthis.getMenu()

4

6 に答える 6

120

に注意してくださいinvalidateOptionsMenu()。メニュー全体を再現します。これには多くのオーバーヘッドがあり、SearchView. SearchViewなぜ「ランダムに」閉じるのかを突き止めるのにかなりの時間がかかりました。

onPrepareOptionsMenu(Menu)ダークが投稿したメニューをキャプチャし、必要に応じて呼び出しました。これは、厄介な副作用なしで私の要件を満たしました。onPrepareOptionsMenu()注意点:メニューが作成される前に呼び出す場合に備えて、必ず null チェックを行ってください。私はこれを以下のようにしました:

private Menu mOptionsMenu;

@Override
public boolean onCreateOptionsMenu(final Menu menu) {
    mOptionsMenu = menu
    ...
}

private void updateOptionsMenu() {
    if (mOptionsMenu != null) {
        onPrepareOptionsMenu(mOptionsMenu);
    }
}
于 2013-12-19T21:52:43.570 に答える
30

メニューオブジェクトを渡す代わりに、invalidateOptionsMenu()を呼び出します。

于 2013-02-08T08:39:22.390 に答える
14

MenuオブジェクトをActivityクラスに渡すことでそれを行うことができます

public class MainActivity extends Activity
{
    ...
    ...
    private Menu _menu = null;

    @Override
    public boolean onCreateOptionsMenu(Menu menu) 
    {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        _menu = menu;
        return true;
    }

    private Menu getMenu()
    {
        //use it like this
        return _menu;
    }
}
于 2013-01-13T12:41:13.440 に答える
1

私があなたがここで何を望んでいるのか理解できる限り、それはあなたを助けるかもしれません:

1.オプションメニューよりもこのチュートリアルを参照してください。

2.ユーザーがメニューボタンを押すたびに、タイトルを確認できますgetTitle()

3.または、ユーザーがメニューボタンを押していないときにチェックまたは選択された最後のメニュー項目を知りたい場合は、ユーザーが押したときに設定を保存する必要があります。

于 2012-05-14T08:11:43.970 に答える
0

Android には、設定/取得できるメニューであるToolbarウィジェットが追加されました。たとえば、フラグメントからの onCreateOptionsMenu などの setSupportActionBar(Toolbar) のバリエーションを使用して、アクティビティにツールバーを設定します。スレ復活!

于 2021-10-07T18:21:59.277 に答える