活动布局:片段类:vs android:名称属性

我已经阅读了Android开发者指南中关于Fragments的文档,并且我已经看到有时他们指定了要使用Fragment标签属性android:name实例化的类,并且有时他们使用class: attribute:

<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:名称类:可以互换吗? 如果我在Eclipse中使用自动完成function,它们都显示相同的文档提示(即属性提供了要实例化的类名称)。 也许你必须使用第二个,当实例化的类有一个不同于java文件名的名字,如在FragmentLayout.java文件中的TitlesFragment ? 或者我也可以使用语法package.fileDOTjava $ Class也与android:name属性?

我想有一些关于Android Java类的XML标签和属性的文档(我在另一个问题中已经提到过)。

由于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”属性。 并在失败看起来“名称”属性。 因此,如果更高效的话,使用“class”就是事实。

Android:名称和类:可以互换吗?

据推测,是的。 我只使用class ,这似乎是大多数谷歌的例子使用,但我确实看到他们在某些样本中使用android:name 。 不幸的是, <fragment>没有正式和完整的文档。

对不起所有的专家在这里,我可能是错误的,但根据我的知识android:片段的名称属性是用来查找片段,当我们使用fragmentManager类的getFragmentByTag()方法。 还有android:class属性用于查找我们通常为静态片段包含的片段类。

希望这将有助于..谢谢