<質問>ToolBarについて
複数のActivity.javaでToolBarを実装して、全く同じオーバーフローメニューを作りたいと考えています。全く同じオーバーフローメニューなので、各Activity.javaに全く同じ内容のonOptionsItemSelected()を記述することになりすが、同じコードなので記載個所は一か所にし、各Activity.javaから参照させるように記載したいと考えてます。
<試みたこと>
MainActivity.javaにonOptionsItemSelected()を記載し、各子Activity.javaからMainActivity.javaのonOptionsItemSelected()を参照させる。
<エラー>
onOptionsItemSelected()のpackageContextのところでエラー(NullPointerException)がでます。呼び出し元のActivity.javaのContextが渡せていないからだと思うのですが、どう扱っていいか分かりません。
例えば、ScondActivity.javaのコードはエラーになるのですが、こんな感じで他のactivityから、MainActivityのonOptionsItemSelected()を使えたら、と模索してます。
いい方法はないでしょうか?よろしくご教授お願いします。
MainActivity
1@Override 2protected void onCreate(Bundle savedInstanceState) { 3 super.onCreate(savedInstanceState); 4 setContentView(R.layout.activity_main); 5 6 Toolbar myToolbar = (Toolbar) findViewById(R.id.myToolbar); 7 setSupportActionBar(myToolbar); 8 getSupportActionBar().setDisplayHomeAsUpEnabled(true); 9} 10 11@Override 12public boolean onCreateOptionsMenu(Menu menu){ 13 getMenuInflater().inflate(R.menu.menu,menu); 14 return true; 15} 16 17@Override 18public boolean onOptionsItemSelected(MenuItem item){ 19 switch (item.getItemId()){ 20 case R.id.item1: 21 return true; 22 case R.id.item2: 23 return true; 24 default: 25 return super.onOptionsItemSelected(item); 26 } 27}
SecondActivity
1@Override 2protected void onCreate(Bundle savedInstanceState) { 3 super.onCreate(savedInstanceState); 4 setContentView(R.layout.activity_main); 5 6 Toolbar myToolbar = (Toolbar) findViewById(R.id.myToolbar); 7 setSupportActionBar(myToolbar); 8} 9 10@Override 11public boolean onCreateOptionsMenu(Menu menu){ 12 getMenuInflater().inflate(R.menu.menu,menu); 13 return true; 14} 15 16@Override 17public boolean onOptionsItemSelected(MenuItem item){ 18 Log.d("@----->", String.valueOf(item.getItemId())); 19 MainActivity activity = new MainActivity(); 20 activity.onOptionsItemSelected(item); 21 return true; 22}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。