私のアクティビティのいくつかのメソッドでは、メニューのタイトルを確認したり、チェックされているかどうかを知りたいです。アクティビティのメニューを取得するにはどうすればよいですか。次のようなものが必要ですthis.getMenu()
6 に答える
に注意してください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);
}
}
メニューオブジェクトを渡す代わりに、invalidateOptionsMenu()を呼び出します。
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;
}
}
私があなたがここで何を望んでいるのか理解できる限り、それはあなたを助けるかもしれません:
1.オプションメニューよりもこのチュートリアルを参照してください。
2.ユーザーがメニューボタンを押すたびに、タイトルを確認できますgetTitle()
。
3.または、ユーザーがメニューボタンを押していないときにチェックまたは選択された最後のメニュー項目を知りたい場合は、ユーザーが押したときに設定を保存する必要があります。
Android には、設定/取得できるメニューであるToolbarウィジェットが追加されました。たとえば、フラグメントからの onCreateOptionsMenu などの setSupportActionBar(Toolbar) のバリエーションを使用して、アクティビティにツールバーを設定します。スレ復活!