- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:android inflateメソッドについて)
Android inflateメソッドについて
このQ&Aのポイント
- Androidのinflateメソッドとは、ViewをXMLファイルから生成するためのメソッドです。
- Eclipseの「新規アプリケーション・プロジェクト」でプロジェクトを作成すると自動的に生成されるコードには、inflateメソッドが含まれています。
- このメソッドは、MenuInflaterクラスのメソッドとして提供されており、import文で明示的にクラスを定義しなくても使用することができます。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
noname#247307
回答No.1
importというのは、単に「クラスの検索対象」を設定するだけです。クラスを利用する場合、本来ならば、例えばandroid.view.MenuInflaterというようにパッケージまで全て書かないといけません。が、これは面倒です。そこで import android.view.MenuInflater;としておくことで、MenuInflaterというクラス名を書くだけでandroid.view.MenuInflaterが検索されるようになる、ということなのです。ですから、 >import文でMenuInflaterクラスを定義していないのになぜ使用できるのでしょうか。 このソースコードでは、MenuInflaterというクラスは使われていません。ただ単に、MenuInflaterインスタンスを返すメソッドを呼び出し、その返値のインスタンス内のメソッドを呼び出しているだけです。MenuInflaterというクラスを検索する必要がないのでimport文は不要です。 何かのクラスのインスタンスを返すメソッドを利用するとき、その返すクラスをimportしなくともそのメソッドは使えますし返されるインスタンスも使えます。返されるインスタンスは、それがどのクラスのインスタンスかわからない、なんてことはないからです。必ず、そのメソッドを定義するところで、「このパッケージにあるこのクラスのインスタンスが返される」と指定されていますから。 importが必要なのは、あくまで「指定したクラスが、クラス名だけではわからない場合」のみです。そのような場合にのみ、「このパッケージにあるこのクラスを使うんだよ」とimportで教えておくのです。
お礼
ありがとうございます! 理解できました。 ソースコードの中で MenuInflater menuInflater = new MenuInflater が無いのでMenuInflaterクラスは使われていないということですね。