アクティビティのいくつかのメソッドでは、メニューのタイトルを確認したり、チェックされているかどうかを知りたいです。アクティビティのメニューを取得するにはどうすればよいですか。 this.getMenu()
のようなものが必要です
invalidateOptionsMenu()
に注意してください。メニュー全体を再作成します。これには多くのオーバーヘッドがあり、SearchView
などの埋め込みコンポーネントをリセットします。 SearchView
が「ランダムに」閉じる理由を突き止めるのにかなり時間がかかりました。
Darkが投稿したメニューをキャプチャし、必要に応じて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。または、ユーザーがメニューボタンを押していないときにチェックまたは選択した最後のメニュー項目を知りたい場合は、ユーザーがプレス。
パラメータとしてメニューを提供するコールバックメソッドがいくつかあります。
そこで操作したいかもしれません。
例えば:
onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo)
onCreateOptionsMenu(Menu menu)
onCreatePanelMenu(int featureId, Menu menu)
アクティビティのドキュメントを見て、目的のメソッドを探すのがベストです: http://developer.Android.com/reference/Android/app/Activity.html