2014-12-04 1 views
0

Я создал фрагмент внутри файла макета деятельности. Для например:Идентификатор завышенного представления будет восстановлен идентификатором фрагмента после прикрепления?

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal"> 

    <fragment android:layout_height="match_parent" 
     android:layout_width="0dp" 
     android:layout_weight="2" 
     android:id="@+id/article_fragment" 
     android:name="com.user.domain.ArticleFragment"/> 
</LinearLayout> 

и раздувать вид в ArticleFragment::onCreateView функции:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    ... 
    return inflater.inflate(R.layout.article_view, container, false); 
} 

ariticle_view макет XML выглядит следующим образом:

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/article" 
    android:textSize="18sp" 
    android:padding="16dp" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 
</TextView> 

Проблема здесь: почему я могу только найдите вид через id фрагмента (R.id.article_fragment), а не его идентификатор (R.id.article) после tached и id экземпляра экземпляра также изменился на id фрагмента.

Может ли кто-нибудь помочь объяснить странное поведение?

Документ для фрагментов апи имеет такое описание:

The system inserts the View returned by the fragment directly in place of the <fragment> element.

ли, что причина, по этому вопросу?

+0

означает, что вы хотите найти идентификатор для article_fragment ??? – Piyush

+0

Я хочу получить экземпляр представления после созданного представления – ltang

+0

Вы можете сделать глобальную переменную для просмотра и ссылаться на этот экземпляр на возвращаемое представление в 'onCreateView()'. – Piyush

ответ

0

Вы должны найти вас Fragment «s ребенок Views как

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
View v = inflater.inflate(R.layout.article_view, container, false); 
TextView yourText = v.findViewById(R.id.article); 
return v; 
} 
+0

Да, мы можем хранить экземпляр представления по идентификатору вида в функции OnCreateView, но мы также можем получить экземпляр представления по идентификатору фрагмента после создания представления. – ltang

+0

В этом случае ** v ** IS TextView, потому что он является родительским. – vilpe89

+0

О, я пропустил этот момент. Вы пытались перебросить «View» в «TextView»? – Droidman