我已经阅读了Android Developer Guide中关于Fragments的文档,我看到他们有时使用片段标签属性android:name指定要实例化的类,有时使用class:属性:
<fragment
android:name="com.example.news.ArticleReaderFragment"
android:id="@+id/viewer"
android:layout_weight="2"
android:layout_width="0dp"
android:layout_height="match_parent" />
<fragment
class="com.example.android.apis.app.FragmentLayout$TitlesFragment"
android:id="@+id/titles"
android:layout_weight="1"
android:layout_width="0px"
android:layout_height="match_parent" />
android:name和class:可以互换吗?如果我在Eclipse中使用自动补全功能,它们都显示了相同的文档提示(即该属性提供了要实例化的类名)。当要实例化的类的名称与java文件名不同时,可能必须使用第二个名称,比如FragmentLayout.java文件中的TitlesFragment?或者我可以将语法package.fileDOTjava$Class也与android:name属性一起使用吗?
我想要一些关于XML标记和属性的文档,就像Android Java类一样(我已经在另一个question中询问过它)。
发布于 2012-12-19 18:43:43
正如Activity.onCreateView来源所说:
String fname = attrs.getAttributeValue(null, "class");
TypedArray a = context.obtainStyledAttributes(attrs, com.android.internal.R.styleable.Fragment);
if (fname == null) {
fname = a.getString(com.android.internal.R.styleable.Fragment_name);
}
这似乎意味着程序首先看起来是"class“属性。如果失败,则会查看"name“属性。因此,如果效率更高,那么使用"class“是正确的。
https://stackoverflow.com/questions/10162983
复制相似问题