Activity Layout: Fragment class: vs android:name attributes

别说谁变了你拦得住时间么 提交于 2019-11-26 04:20:39

问题


I\'ve read the documentation about Fragments in the Android Developer Guide and I\'ve seen that sometimes they specify the class to instantiate with the Fragment tag attribute android:name and sometime they use the 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\" />

Are android:name and class: interchangeable? If I use the autocompletion function in Eclipse, they both show the same documentation tip (i.e. the attribute provides the class name to be instantiated). Maybe you must use the second one when the class to be instantiated has a name which is different from the java file name, like TitlesFragment which is in the FragmentLayout.java file? Or can I use the syntax package.fileDOTjava$Class also with the android:name attribute?

I\'d like to have some documentation for XML tags and attributes as for Android Java Classes (I\'ve asked about it in another question).


回答1:


As Activity.onCreateView source says:

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

That seemingly means that program looks "class" attribute first. And on fail looks "name" attribute. So as far as it's true using "class" if more efficient.




回答2:


Are android:name and class: interchangeable?

Presumably, yes. I have only used class, and that seems to be what most of Google's examples use, but I do see where they use android:name in some samples. Unfortunately, there is no formal and complete documentation for <fragment>.




回答3:


Sorry all experts are here, I may be wrong but as per my knowledge android:name attribute of fragment is used to find fragment, when we use getFragmentByTag() method of fragmentManager class. also android:class attribute is used to find fragment class which we generally include for static fragment.

Hope this will help.. thanks



来源:https://stackoverflow.com/questions/10162983/activity-layout-fragment-class-vs-androidname-attributes

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!