2

私はそうのように、私のNavigationViewメニューにカスタム項目を追加する場合:設定データ

Menu menu = navigationView.getMenu(); 

MenuItem item = menu.add("Item 1"); 

ように、それがクリックさだとき、どのように私は/、(オブジェクトなど)の項目にデータを設定することができます選択すると、そのデータを開いたアクティビティに渡すことができますか?

答えて

1

メニュー項目にデータを設定/追加することはできません。このアイテムは、の一部であるべきグループ識別子: - int型を

をgroupIdをadd()方法のdocumentationを見ることによって、あなたが設定できることがわかります。これは、バッチ状態の変更のための項目のグループを定義するために使用できます。アイテムがグループに含まれるべきでない場合、通常NONEを使用します。

itemId - int:ユニークなアイテムID。一意のIDが不要な場合はNONEを使用します。

オーダー - int:アイテムの順序。注文を気にしない場合はNONEを使用します。 getOrder()を参照してください。

タイトル - CharSequence:アイテムに表示するテキスト。

したがって

あなたはこれが私のために意味がありませんitemIdを設定し、onNavigationItemSelected()

@Override 
public boolean onNavigationItemSelected(MenuItem item) { 
    // Handle navigation view item clicks here. 

    int id = item.getItemId(); 

    if (id == R.id.id_of_menu_item_1) { 

     // handle intents and passing data 

    } else if (id == R.id.id_of_menu_item_2) { 

     // handle intents and passing data 

    } 

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    drawer.closeDrawer(GravityCompat.START); 
    return true; 
} 
+1

はい、どのように私は**クリックしたときに活動に渡すことができる**メニュー項目**のデータを設定するのですか?たとえば、アイテムに 'User'オブジェクトを設定するにはどうすればいいのですか?そのアイテムが選択されたら、アクティビティに送信しますか?あなたの例では、アイテムが選択されたときにのみデータを渡すことができます。私が必要とするのは、アイテムにデータを添付し、選択するとそのデータを取得してアクティビティに渡すことです。 – user7556225

+0

メニュー項目にid以外のデータを設定しないでください。それらはクリックすることしかできません。それが起こると、彼らは 'onNavigationItemSelected()'メソッドを呼び出します。ここで、idを読み込んでクリックしたメニュー項目を特定し、必要なタスクを処理します。たとえば、 'intent'を作成してデータを渡すなど、他のタスクを実行する – Marat

+0

私のメニュー項目の多くが同じアクティビティを開きますが、別のデータ(この場合はオブジェクト)を渡す必要がある場合はどうすればいいですか? – user7556225

0

内の特定のタスクを処理する必要があります。 MenuItemクラスは、メニュー項目に関連する属性のみを保持します。 MenuItemインスタンス内に他のオブジェクトを配置することはできません。 MenuItemクラスについて見てみましょう:

MenuItem class

あなたは現在のアクティビティに新しいアクティビティやロードオブジェクトに必要なデータを取得し、意図を使用して、新しい活動に渡し、ちょうどBundleを作成して、シリアライズを置くために、リポジトリのパターンを使用することができますまたはその上のパーセルブルオブジェクト。あなたはこれを行うことができますonNavigationItemSelected(MenuItem item)

関連する問題