Android開発中のLayout Inflaterの使い方について詳しく説明します。


本論文の実例はAndroid開発におけるLayoutInflaterの使用法を述べている。皆さんに参考にしてあげます。具体的には以下の通りです。
実際の開発において、Layout Inflaterという種類は非常に有用であり、その役割はfindView ById()に類似している。異なる点はLayout Inflaatがres/layout/下のxmlレイアウトファイルを探しています。findViewById()は、Button、TextViewなどの具体的なWidgetコントロールを探しています。
具体的な役割:
1、ロードされていない、または動的にロードしたいインターフェースには、LayoutInflater.inflate()を使用してロードする必要があります。
2、既にロードされたインターフェースに対して、Activiyt.findViewById()方法を使ってインタフェース要素を得ることができます。
LayoutInflaterは抽象的なクラスで、文書の中では次のように声明しています。
public abstract class Layout Inflater extens Object
LayoutInflaterのインスタンスを獲得する3つの方法
1.LayoutInflater inflater=get Layout Inflater()//Activityを呼び出すget Layout Inflater()
2.Layout Inflater inflater=Layout Inflater.from(context)
3.Layout Inflater inflater=  (Layout Inflater)context.gets System Service
                              (Conttext.LAYOUT_INFLATER_SERVICE)
実は、この3つの方法の本質は同じです。ソースから見てもいいです。
get Layout Inflater():
Activityのget Layout Inflater()は、Phone Windowのget Layout Inflaterを呼び出す方法です。ソースコードを見てください。

public PhoneWindow(Context context)
{
 super(context);
 mLayoutInflater = LayoutInflater.from(context);
}

実はLayoutInflater.fromを呼び出していることが分かります。
Layout Inflater.from(context):

public static LayoutInflater from(Context context)
{
 LayoutInflater LayoutInflater = (LayoutInflater) context.getSystemService
   (Context.LAYOUT_INFLATER_SERVICE);
 if (LayoutInflater == null)
 {
  throw new AssertionError("LayoutInflater not found.");
 }
 return LayoutInflater;
}

実はcontext.gets System Serviceを呼んでいることが分かります。
結論:だから、この3つの方法の最終的な本質は呼び出しのContect.getsSystem Serviceです。
また、get System Service()は、Androidにとって重要なAPIであり、Activityの方法であり、着信したNAMEによって対応するObjectを取得し、対応するサービスオブジェクトに変換する。システムに対応するサービスを以下に紹介します。
伝来のName
戻るオブジェクト
説明
WINDOW_SERVICE
WindowManager
開いているウィンドウプログラムを管理します。
LAYOUT_INFLATER_SERVICE
Layout Inflater
xmlで定義されたviewを取得します。
ACT IVITY_SERVICE
ActivityManager
アプリケーションのシステム状態を管理する
POWER_SERVICE
PowerManger
電源のサービス
ALARM_SERVICE
AlarmManager
目覚まし時計のサービス
NOTIFICATION_SERVICE
NotificationManager
ステータスバーのサービス
KEYGUARD_SERVICE
KeygardManager
キーボードロックのサービス
LOCATION_SERVICE
LocationManager
GPSなどの位置のサービス
SEARCH_SERVICE
Search Manager
検索サービス
VBREATORSERVICE
Vebrator
携帯のバイブレーションサービス
CONNETIVITY_SERVICE
Connectivity
ネットワーク接続サービス
WIFI_SERVICE
WifiManager
Wi-Fiサービス
TELEPHONY_SERVICE
TeleponyManager
電話サービス
inflate方法
sdkのapi文書を通じて、この方法は以下のような過負荷形式があり、戻り値はすべてViewオブジェクトであることが分かります。

public View inflate (int resource, ViewGroup root)
public View inflate (XmlPullParser parser, ViewGroup root)
public View inflate (XmlPullParser parser, ViewGroup root, boolean attachToRoot)
public View inflate (int resource, ViewGroup root, boolean attachToRoot)

概略コード:

LayoutInflater inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.custom, (ViewGroup)findViewById(R.id.test));
//EditText editText = (EditText)findViewById(R.id.content);// error
EditText editText = (EditText)view.findViewById(R.id.content);

上のコードに対して、2番目のパラメータView Grootを指定しました。当然、null値に設定することもできます。
注意:
・inflate方法とfindView ById方法が違います。
・inflaatは、res/layoutの下のxmlレイアウトファイルを探して実行します。
・findViewById()は具体的なxmlレイアウトファイルの具体的なwidgetコントロール(例えばButton、TextViewなど)を探しています。
Android関連の内容についてもっと興味がある読者は、当駅のテーマを調べてもいいです。「Android開発入門と上級教程」、「Androidマルチメディア操作技術まとめ(オーディオ、ビデオ、録音など)」、「Android基本コンポーネントの使い方のまとめ」、「AndroidビューViewテクニックのまとめ」、「Androidレイアウトlayout技巧まとめ」および「Androidコントロールの使い方のまとめ
ここで述べたように、皆さんのAndroidプログラムの設計に役に立ちます。