onCreateOptionsMenuメソッドの「引数menu」と「return」について分からないことがあります。
ネットでandroid公式ドキュメントなど色々なサイトを調べましたが分からなかったので質問させてください。
以下は手持ちの参考書にあるコードです。
java
1 @Override 2 public boolean onCreateOptionsMenu(Menu menu){ // 質問(1) 3 // メニューインフレ―ターの取得。 4 MenuInflater inflater = getMenuInflater(); 5 // オプションメニュー用.xmlファイルをインフレート。 6 inflater.inflate(R.menu.menu_options_menu_list, menu); 7 // 親クラスの同名メソッドを呼び出し、その戻り値を返却。 8 return super.onCreateOptionsMenu(menu); // 質問(2) 9 }
質問(1)
public boolean onCreateOptionsMenu(Menu menu)
→ Activity生成時にこのメソッドが呼ばれると思いますが、その時にこの「引数menu」には何が渡されているのでしょうか?
inflater.inflate(R.menu.menu_options_menu_list, menu);のところで、MnuInflaterのinflateメソッドによって.xml(リソースファイル)に記述された部品が、Javaオブジェクトになりmenuに格納されているのは理解できますが、その前段階のpublic boolean onCreateOptionsMenu(Menu menu) のmenuに何が渡されているのかが分かりません。
質問(2)
return super.onCreateOptionsMenu(menu);
→ 「親クラスの同名メソッドを呼び出し、その戻り値を返却」と書かれているが、なぜこのようなことをやっているのでしょうか?
なぜ親クラスのメソッドをわざわざ呼ぶ必要があるのか?「return true;」だけではダメなのでしょうか?(そう記述している解説サイトもある)
(※ true = メニューが表示される、false =メニューが表示されない となるようです。)
ちなみにこのonCreateOptionsMenuメソッドが定義されているActivityクラスには以下のように記述されています。
public boolean onCreateOptionsMenu(Menu menu) { if (mParent != null) { return mParent.onCreateOptionsMenu(menu); } return true; }
これを見るとmParentが何なのかよく分かりませんが、mParentがnullの場合はtrueが返るようになっているようです。
同様の意味で、
・onOptionsItemSelectedメソッドの return super.onOptionsItemSelected(item);
・onContextItemSelectedメソッドの return super.onContextItemSelected(item);
についてもなぜ親メソッドを呼び出しているのがか疑問です。
あなたの回答
tips
プレビュー