假设我有一个简单的布局xml,如下所示:
button.xml:
<Button
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/button01"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
以下来电有什么不同吗?我应该使用哪一个?
button = (Button) getLayoutInflater().inflate(R.layout.button, null);
和
View v = getLayoutInflater().inflate(R.layout.button, null);
button = (Button) v.findViewById(R.id.button01);
答案 0 :(得分:14)
这个创建一个具有给定布局的新视图,其中'R.layout.button'是由xml文件'button.xml'的名称生成的。每次调用.inflate(...),都会得到一个新实例。
View v = getLayoutInflater().inflate(R.layout.button, null);
-
当一个人在布局中找到一个现有的视图,其中R.id.button01是由id名称'android:id =“@ + id / button01”'生成的。每次调用.findViewById(R.id.button01)时,您将获得相同的实例,因为视图'v'将是相同的。
button = (Button) v.findViewById(R.id.button01);
答案 1 :(得分:0)
第一种选择更清洁,效率更高。
您的布局inflater将返回Button
。使用第一个选项,您可以直接访问Button
。使用第二个选项,您将按钮向下转换为View
,然后查找具有给定ID的视图,这是一个额外无用的比较,因为具有您在层次结构中查找的ID的视图发生成为按钮本身。所以在第二个选项v == button
。