私は自分のナビゲーションドロワーのMenuItems(コンテキストメニューからアイテムを選択するために動的に作成されたリストを表示するために)を開きたいと思います。しかし、どのビューをregisterForContextMenu
に使用するかを知ることはできません。openContextMenu
に手動で渡すビューもわかりません(たとえば、コンテキストメニューをワンクリックで表示したい場合など)。単にMenuItem識別子を使用すると、Viewにキャストできないため、機能しません。では、ここでコンテキストメニューを使用するにはどうすればいいですか?ナビゲーションドロワーのMenuItemにコンテキストメニューを作成するにはどうすればよいですか?
0
A
答えて
0
これを実行する方法の1つは、コンテキストメニューのNavigationView全体を登録し、アイテムをクリック/ロングクリックしたときに手動で呼び出す前に内部メンバー変数に保存して選択したmenuItemを追跡することですNavigationViewのopenContextMenu
。それで、私が実際にコンテキストメニューを必要とするMenuItemsに対してのみ、onCreateContextMenu
を実装することができます。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.top_menu, menu);
NavigationView nav_draw = (NavigationView) findViewById(R.id.nav_view);
if (nav_draw != null) {
registerForContextMenu(nav_draw);
}
return true;
}
私はメンバ変数
私はいつでも「面白い」メニューのどれもが、アイテムはnullに保つprivate MenuItem _lastNavDrawerMenuItemSelected = null;
を紹介:
は具体的には、私はこのようなコンテキストメニューの引き出しを登録
が選択されている場合は、呼び出すメニュー項目を保存し、コンテキストメニューを手動で開きます。public void inflateSubMenu(MenuItem item) {
NavigationView v = (NavigationView) findViewById(R.id.nav_view);
if (v != null) {
_lastNavDrawerMenuItemSelected = item;
openContextMenu(v);
}
}
onCreateContextMenu
で
は、私が唯一の希望のMenuItemが処理を受けることを確認して、NavigationViewとgroupId
とitemId
として現在のMenuItemのIDを渡すと、null
に戻って内部メンバ変数を設定します。
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
if (v.getId() == R.id.nav_view) {
if (_lastNavDrawerMenuItemSelected != null) {
if (_lastNavDrawerMenuItemSelected.getItemId() == R.id.my_submenu_item_id) {
menu.setHeaderTitle(...);
menu.add(v.getId(),_lastNavDrawerMenuItemSelected.getItemId(), Menu.NONE, <ENTRY TITLE>);
...
}
_lastNavDrawerMenuItemSelected = null;
}
}
}
を最後に、私は(コンテキストメニューが構築されたために、私はのMenuItemに設定)groupId
(私は上記NavigationViewに設定されている)とitemId
に基づいて必要な措置を実施:
@Override
public boolean onContextItemSelected(MenuItem item) {
if (item.getGroupId() == R.id.nav_view) {
if (item.getItemId() == R.id.my_submenu_item_id) {
...
}
}
return true;
}
関連する問題
- 1. メッセージの右クリックでOutlook 2007のコンテキストメニューを作成するにはどうすればよいですか?
- 2. ListBoxItemの動的コンテキストメニューを作成するにはどうすればよいですか?
- 3. コンテキストメニューのタイトルを設定するにはどうすればよいですか?
- 4. Androidで新しいナビゲーションドロワーの基本動作を設定するにはどうすればよいですか?
- 5. ウェブサービスアプリの作成にはどうすればよいですか?
- 6. 左側にナビゲーションドロワーを作成し、右側にメニューアイコンを作成するにはどうすればよいですか?
- 7. ナビゲーションドロワーのトップロゴをボタンとして正しく動作させるにはどうすればよいですか?
- 8. XAMLのContextMenuですべてのMenuItemを無効にするにはどうすればよいですか?
- 9. 事前に構築されたアプリにナビゲーションドロワーを追加するにはどうすればよいですか?
- 10. node.jsにエンジンループを作成するにはどうすればよいですか?
- 11. タイトルバーにツールバーを作成するにはどうすればよいですか?
- 12. ブログにアップロードファイルフォームを作成するにはどうすればよいですか?
- 13. nomにストリーミングパーサーを作成するにはどうすればよいですか?
- 14. メンバーにshared_ptrを作成するにはどうすればよいですか?
- 15. コンテキストメニューを追加するにはどうすればいいですか?Xamarin.forms
- 16. バックホームアイコンボタンを使用するためにナビゲーションドロワーを却下するにはどうすればよいですか?
- 17. SQLPlusのバッチファイルを作成するにはどうすればよいですか?
- 18. RealPlayerのプレイリストを作成するにはどうすればよいですか?
- 19. クレートワイドのドキュメントを作成するにはどうすればよいですか?
- 20. カスタムページのカールコアアニメーションを作成するにはどうすればよいですか?
- 21. レスポンシブデザインのウェブサイトを作成するにはどうすればよいですか?
- 22. マルチコンテンツのメナストリップを作成するにはどうすればよいですか?
- 23. マウスベースのスライドアウトドックを作成するにはどうすればよいですか?
- 24. ankhsvnのコミットコメントテンプレートを作成するにはどうすればよいですか?
- 25. firebaseのカスタムバックエンドを作成するにはどうすればよいですか?
- 26. NetworkInterfacesOperationsのインスタンスを作成するにはどうすればよいですか?
- 27. リストのリストを作成するにはどうすればよいですか?
- 28. メソッドのMethodCallExpressionを作成するにはどうすればよいですか?
- 29. ウェブサイトのインストールファイルを作成するにはどうすればよいですか?
- 30. ジェネリックデリゲートインスタンスのリストを作成するにはどうすればよいですか?
が、これは宿題/アプリの作品のいくつかの並べ替えですか?私はずっと前とまったく同じ質問を見ました。私は他の質問と同じアドバイスをして、あなたのロジックを再考してください:メニュー項目のコンテキストメニューを起動するべきではありません。これは大多数のユーザーが期待するものではないからです。 – Luksprog
私は、アクションバーのメニュー項目について同じことについてユーザーが議論しているのを見てきました。だから、なぜドロワーメニュー項目に対して同じことをやってみませんか? 開発中の誰もが本格的なAndroidの専門家ではないことを考慮してください(宿題の代わりに「実際の」アプリで作業することで挑戦する人もいるかもしれません)。アプローチはここに役立つ?私はサブメニューを使ってみましたが、ここでいくつかの記事を読んで理解できれば、私は簡単に展開/再展開できないので、引き出しメニューは永続的に開いているサブメニューでは手に入らなくなります。 – urps
ウィジェットはウィジェットのために作られたものではないため(アプリを介したナビゲーションの提供や、ContextMenuのような任意のものを表示しないなど)、これをお勧めします。代わりに、あなたが提供した小さな情報からNavigationViewをExpandableListViewに置き換えることをお勧めします。この方法では、 "メインオプション"(現在のメニューオプション)と、ユーザーがそれらをクリックすると子ビューを表示しますあなたのデータのリスト)は、あなたがデータを表示する方法にいくつかの構造を提供します。 – Luksprog