web-dev-qa-db-ja.com

getLayoutInflater()と.getSystemService(Context.LAYOUT_INFLATER_SERVICE)の間に違いはありますか

単純な「いいえ」の回答で落ち着きます。何か違いがある場合、それは何ですか?

32
Lord_JABA

番号

getLayoutInflater()を呼び出すアクティビティまたはウィンドウがgetSystemService()を呼び出すコンテキストと同じである限り、違いはありません。


ProofgetLayoutInflater()によって返されたLayoutInflaterを LayoutInflater.from() まで追跡すると、これは、ソースコードからのgetSystemService()のショートカットです。

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;
}
40
Sam

少なくとも1つの状況があり、

getSystemService(Context.LAYOUT_INFLATER_SERVICE);

対応するものの代わりに使用する必要があります

getLayoutInflater

その状況は、任意のオブジェクトクラスにあります。たとえば、objectAというクラスのインスタンスがあります。 objectAで、親ビューにビューを拡大します(リストビューのカスタマイズされた行を拡大するArrayAdapterで発生します)。この場合、context.getLayoutInflaterコンテキストに関連付けられたアクティビティまたはウィンドウがないため、機能しません。 getSystemService(Context.LAYOUT_INFLATER_SERVICE)のみが適切です。

4
Driedshrimp

これは、LayoutInflaterを定義する方法です。

_LayoutInflater inflater = (LayoutInflater)context.getSystemService (Context.LAYOUT_INFLATER_SERVICE);
_

そしてgetLayoutInflater()は、LayoutInflaterを返すことにより、「ウィンドウがそのコンテキストから取得したLayoutInflaterインスタンスへの迅速なアクセス」を( documentation から)提供します。

同様に、getSystemService(Context.LAYOUT_INFLATER_SERVICE)は、このコンテキストでレイアウトリソースを拡張するためのLayoutInflaterを取得するために使用されます。

したがって、実際には2つの間に[〜#〜] no [〜#〜]の違いがあります。

出典: Documentation

3
Swayam

番号。

全く違いはありません。

2
Harshil Pansare