2016-07-19 19 views
0

onClickリスナーのImageButtonからoptionMenuを呼び出そうとしていますが、次の例外が発生しています。ImageButtonのOpenOptionMenuによってNULLポインタ例外が発生する

07-19 01:08:09.693: E/AndroidRuntime(15133): java.lang.NullPointerException: Attempt to invoke interface method 'android.view.MenuItem android.view.Menu.getItem(int)' on a null object reference 


    public class myApp extends Activity implements OnClickListener { 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 

      requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 

     } 

    /** Called when the activity is first created. */ 
    @Override 
    public void onPostCreate(Bundle savedInstanceState) { 
     super.onPostCreate(savedInstanceState); 

     setContentView(R.layout.main); 

     getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.window_title); 

     menu_icon = (ImageView) findViewById(R.id.icon); 
     infoBtn = (ImageButton) findViewById(R.id.pfkey_button); 
     menu_icon.setImageResource(R.drawable.info_icon); 

     menu_icon.setOnClickListener(this); 
     infoBtn.setOnClickListener(this); 

     //Create Terminal View 
     terminalView = (TerminalView)findViewById(R.id.terminalView);//new TerminalView(this);  

     registerForContextMenu(terminalView); 

    } 


    public void onClick(View v) { 


      KeyEvent event = null; 

      if (v == infoBtn) { 
       openOptionsMenu(); 
      } 

      if (v == menu_icon) { 
       openOptionsMenu(); 
      } 

     } 

} 

Iはまた `infoBtn =(のImageButton)myApp.this.findViewById(R.id.pfkey_button)と試みました。しかし

+0

フローを理解できるように完全なコードを投稿してください。それまではこのチュートリアルを参考にしてください。http://www.javatpoint.com/android-option-menu-example – Kushan

+0

onCreateOptionsMenu(メニューメニュー)をオーバーライドしてメニューを最初に膨張させてから、onOptionsItemSelected MenuItem item)で項目を選択 – Kushan

+0

アンドロイドオプションメニューでは、ツールバーの内側に表示されるメニューです。あなたはそれを探していますか?ポップアップメニューと呼ばれる別のものがあります。おそらくあなたが何をしているのか... – Kushan

答えて

0

(onCreateOptionsMenu内の最初のあなたのメニューを膨らませるようにしてください)

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

を働いていないあなたのメニュー自体は、このように例外を発生させ、膨張されていない可能性があります。これはあなたがonPostCreateをオーバーライドなぜ私にはわからない場合

+0

はい私は膨張しています。 – user366584

1

ない場合は、完全なコードを提供してください、私はあなたがのonCreateでこれらのことを行うSHOLDと思います。

これ以外にも、openOptionsMenuは私のアプリでは機能しません。

だから私はアクションバー .Hereを交換するツールバーを使用するには、コードです:実装が正しいですが

public class MainActivity extends AppCompatActivity { 
    private static final String TAG = "MainActivity"; 
    private Toolbar mToolbar; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     mToolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(mToolbar); 
     findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       mToolbar.showOverflowMenu(); 
      } 
     }); 
    } 

    // override this method to inflat the menu 
    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.menu, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     Log.d(TAG, "onOptionsItemSelected: "+item.getTitle().toString()); 
     return super.onOptionsItemSelected(item); 
    } 
} 
0

ここではクラッシュしていました。

@Override 
    public boolean onMenuOpened(int featureId, Menu menu) { 

     /*if (!hostcom.isConnected()) 
      menu.getItem(0).setTitle("Login"); 
     else 
      menu.getItem(0).setTitle("Logout");*/ 

     return true; 

    } 
関連する問題