9

いくつかのチュートリアルを実行しましたが、Android Docでは、インスタンス化するときにLayoutInflaterに直接アクセスしないように指示されています。グーグルドキュメントからの例:

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

私が行ったチュートリアルはこれです:

LayoutInflater inflater = LayoutInflater.from(parent.getContext());

ですから、私が本当に理解していないのは、明らかな異なるコード以外に違いが何であるかということです。どんな説明でも大歓迎です。Android Docは私たちが従うべきものだと思いますが、それが違いを生むかどうかはわかりません。

4

2 に答える 2

17

Androidソースを開くと、LayoutInflator.fromメソッドが次のようになっていることがわかります。

/**
 * Obtains the LayoutInflater from the given 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;
}

つまり、質問の2行のコードは同じことをします。あなたが読んだチュートリアルが正確に何を言っているのかわかりませんが、機能に違いは見られません。このfromメソッドを使用すると、入力が少し少なくて済むので便利です。それだけです。

于 2012-05-27T19:43:50.777 に答える
2
LayoutInflater inflater = (LayoutInflater)context.getSystemService
  (Context.LAYOUT_INFLATER_SERVICE);

あなたはLayoutInflater Service Providerから得ていますSystem Manager

LayoutInflater inflater = LayoutInflater.from(parent.getContext());

staticからのメソッドを使用していますLayoutInflater Class

違いはコードだけであり、これをどのように書くかはスタックを呼び出しますが、結果は同じです-あなたはを得るでしょうLayoutInflater

これについての詳細

よろしく

于 2012-05-27T19:42:23.963 に答える