development

활동 레이아웃 : 조각 클래스 : vs android : name 속성

big-blog 2020. 11. 25. 08:08
반응형

활동 레이아웃 : 조각 클래스 : vs android : name 속성


Android 개발자 가이드에서 Fragments대한 문서를 읽었으며 때때로 Fragment 태그 속성 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" />

있습니까 안드로이드 : 이름클래스 : 교환? Eclipse에서 자동 완성 기능을 사용하면 둘 다 동일한 문서 팁을 표시합니다 (즉, 속성은 인스턴스화 할 클래스 이름을 제공합니다). 인스턴스화 할 클래스가 FragmentLayout.java 파일 에있는 TitlesFragment 와 같이 Java 파일 이름과 다른 이름을 가질 때 두 번째 이름을 사용해야 할 수도 있습니다. 아니면 android : name 속성 과 함께 package.fileDOTjava $ Class 구문을 사용할 수 있습니까?

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

이는 프로그램이 "클래스"속성을 먼저 본다는 것을 의미합니다. 그리고 실패하면 "이름"속성이 보입니다. 더 효율적인 경우 "클래스"를 사용하는 것이 사실입니다.


android : name 및 class : 상호 교환이 가능합니까?

아마도 그렇습니다. 나는 단지을 사용 class했으며 대부분의 Google 예제에서 사용하는 것처럼 보이지만 android:name일부 샘플에서 사용하는 위치를 알 수 있습니다 . 불행히도에 대한 공식적이고 완전한 문서는 없습니다 <fragment>.


모든 전문가가 여기에있어 죄송합니다. 제가 잘못 알고있을 수 있지만 내 지식 에 따라 fragmentManager 클래스의 getFragmentByTag () 메서드를 사용할 때 fragment의 android : name 속성이 조각을 찾는 데 사용됩니다 . 또한 android : class 속성은 일반적으로 정적 fragment에 포함되는 조각 클래스를 찾는 데 사용됩니다 .

이것이 도움이되기를 바랍니다 .. 감사합니다

참고 URL : https://stackoverflow.com/questions/10162983/activity-layout-fragment-class-vs-androidname-attributes

반응형