在 Android 中获取布局充气器的正确方法是啥?
Posted
技术标签:
【中文标题】在 Android 中获取布局充气器的正确方法是啥?【英文标题】:What is the correct way to get layout inflater in Android?在 Android 中获取布局充气器的正确方法是什么? 【发布时间】:2014-01-26 11:58:41 【问题描述】:有一种方法可以得到layoutInflater:
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
另一种方式是:
LayoutInflater inflater = LayoutInflater.from(context);
第三个(当我在一个活动中)是:
LayoutInflater inflater = getLayoutInflater();
那么它们之间有什么区别呢?
请注意,当我将第三个充气机发送到我的适配器时,我的应用程序正常工作。但是当我通过第二种方式发送上下文并创建充气器时,它没有!
【问题讨论】:
差别不大 在 grepcode 上查找这些方法,以便了解它们之间的区别 美学上,第一个 :) 否则,都一样。 看到这个developer.android.com/reference/android/view/… 可能重复:***.com/q/2212197/187543 【参考方案1】:在您的活动之外使用
LayoutInflater inflater = (LayoutInflater) context.getSystemService(
Context.LAYOUT_INFLATER_SERVICE );
在你的活动中
LayoutInflater inflater = getLayoutInflater();
Check this
如果你打开 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;
没有区别
只要调用 getLayoutInflater()
的 Activity 或 Window 与调用 getSystemService()
的 Context 相同,就没有区别。
【讨论】:
你成功了,我从过去五天开始搜索,但没有遇到这个错误,现在你的解决方案可以正常工作@Shyam Deore【参考方案2】:它们之间没有太大区别。
正如医生所说public abstract Object getSystemService (String name)
一个 LayoutInflater 用于在此上下文中膨胀布局资源。
对于public static LayoutInflater from (Context context)
从给定的上下文中获取 LayoutInflater。
你可以查看这个帖子Is there any difference between getLayoutInflater() and .getSystemService(Context.LAYOUT_INFLATER_SERVICE)
【讨论】:
【参考方案3】:唯一的区别是您使用的上下文。如果与LayoutInflater.fromContext()
或context.getSystemService(...)
一起使用的上下文实际上是一个Activity,它应该等效于Activity.getLayoutInflater()
。如果它是应用程序对象,您可能会遇到膨胀包含片段 IIRC 的视图的问题。
【讨论】:
【参考方案4】:其实我认为getLayoutInflater()
-Activity的方法是一种方便的-方法。
记住Activity
是Context
的子类,所以Context
中可用的所有方法在Activity
类中也可用。
内部会调用LayoutInflater.fromContext()
或context.getSystemService()
,所以我会坚持使用context.getSystemService
来避免不必要的方法调用以及澄清我正在调用系统服务。
【讨论】:
以上是关于在 Android 中获取布局充气器的正确方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章