2016-11-28 13 views
0

私はアンドロイドの開発には初めてです。私はアンドロイドスタジオのデフォルトのプロジェクトテンプレート、ナビゲーション引き出しのアクティビティで新しいプロジェクトを作成しました。Android onCreateOptionsMenu findItem get null

私は次のようにデバッグメッセージを追加しました:

public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 

    MenuItem navCamera = menu.findItem(R.id.nav_camera); 

    if(navCamera != null) { 
     Log.d("MainActivity", "Not null"); 
    } 

    return true; 
} 

私はメニュー項目オブジェクトを取得することができないのはなぜ?

Main.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto"> 
<item 
    android:id="@+id/action_settings" 
    android:orderInCategory="100" 
    android:title="@string/action_settings" 
    app:showAsAction="never" /> 

activity_main_drawer.xml

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 

<group android:checkableBehavior="single"> 
    <item 
     android:id="@+id/nav_camera" 
     android:icon="@drawable/ic_menu_camera" 
     android:title="Import" /> 
    <item 
     android:id="@+id/nav_gallery" 
     android:icon="@drawable/ic_menu_gallery" 
     android:title="Gallery" /> 
    <item 
     android:id="@+id/nav_slideshow" 
     android:icon="@drawable/ic_menu_slideshow" 
     android:title="Slideshow" /> 
    <item 
     android:id="@+id/nav_manage" 
     android:icon="@drawable/ic_menu_manage" 
     android:title="Tools" /> 
</group> 

<item android:title="Communicate"> 
    <menu> 
     <item 
      android:id="@+id/nav_share" 
      android:icon="@drawable/ic_menu_share" 
      android:title="Share" /> 
     <item 
      android:id="@+id/nav_send" 
      android:icon="@drawable/ic_menu_send" 
      android:title="Send" /> 
    </menu> 
</item> 

</menu> 
+1

あなたR.menu.mainが – Pavya

+1

ここにあなたのmenu.xmlを貼り付け – Rudresh

答えて

0

申し訳ありませんが、私はあなたの質問を正確に読んでいません。あなたはonCreate()NavigationViewとあなたのlibを使用してアイコンを設定

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    ... 
    //other stuff here 
    ... 
    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 

    // get menu from navigationView 
    Menu menu = navigationView.getMenu(); 

    // find MenuItem you want to change 
    MenuItem nav_camara = menu.findItem(R.id.nav_camara); 

    // set new title to the MenuItem 
    nav_camara.setTitle("NewTitleForCamera"); 
    // Set your icon menu here 

    // do the same for other MenuItems 
    .... 

    // add NavigationItemSelectedListener to check the navigation clicks 
    navigationView.setNavigationItemSelectedListener(this); 

} 
+0

ありがとうございます。ちょうど試したが、まだLog.dステートメントを実行していない。まだヌルです – bns

+0

ありがとうございます。それは今働く。なぜ私はonCreateOptionsMenuでそれを取得できないのですか? – bns

+0

'onCreateOptionsMenu'で' getMenuInflater()。inflate(R.menu.main、menu); 'を実行すると、このメニューでは' activity_main_drawer.xml'というレイアウトは表示されません。 'activity_main_drawer.xml'を' NavigationView'で実行するには、このレイアウトで 'MenuItem'を見つけなければなりません。 –

0

あなたは、メニュー項目を使用で作業したい場合は下記のよう機能をonNavigationItemSelected。

@Override 
public boolean onNavigationItemSelected(MenuItem item) { 

    int id = item.getItemId(); 

    switch (id) { 
     R.id.nav_camera: 
      Log.d("MainActivity", "Not null"); 
     break; 
    } 
} 

と次のようにonCreateOptionsMenu:上記の解答について

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

おかげでファイルを追加見つけることができます。しかし、iconifyを使ってアイコンをアイコンに設定したいと思っています。 – bns

+0

あなたはあなたの質問に基づいて正当化された答えを得なければならないので、あなたは上記のコメントを詳しく述べることができますか? –

+0

メニュー項目にアイコンを設定するには、iconify https://github.com/JoanZapata/android-iconifyを使用します。これを実現するには、次のコードを使用しているようです: menu.findItem(R.id.share).setIcon( 新しいIconDrawable(this、FontAwesomeIcons.fa_share) .colorRes(R.color.ab_icon) .actionBarSize()); 私に上記の問題を紹介します – bns

関連する問題