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

这意味着您问题中的两行代码做同样的事情。不确定您阅读的教程到底说了什么,但我看不出功能上有任何区别。使用该from方法很好,因为它需要更少的输入,就是这样。

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

LayoutInflater Service ProviderSystem Manager

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

您正在使用static来自的方法LayoutInflater Class

我会说差异仅在于代码以及您如何编写此代码也调用堆栈但结果是相同的 - 您会得到LayoutInflater.

更多关于这个

问候

于 2012-05-27T19:42:23.963 回答