2013-11-29 5 views
4

(Во-первых, я знаю, этот вопрос был задан много раз, но я не нашел применимый ответ)Как найти идентификатор фрагмента? В качестве альтернативы, как мне предоставить фрагмент ID?

Я фрагмент создан как таковой:

inflater.inflate (R.layout.fragment_task_ongoing, container, false); 

Что я d, как, заключается в использовании findFragmentById в FragmentActivity, как это:

TaskActiveFragment f = (TaskActiveFragment) getSupportFragmentManager().findFragmentById (R.id.fragment_task_ongoing); 

к сожалению, это возвращает нуль. Очевидная причина заключается в том, что идентификатор, используемый в качестве параметра, является идентификатором RelativeLayout, накачанным, а не фрагментом. Первые линии макета:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/fragment_task_ongoing" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingLeft="16dp" 
android:paddingRight="16dp" > 

Итак, как я считаю, что ID фрагмент имеет? Если у него нет идентификатора, как мне его указать? Programatically? XML?

Редактировать: мои фрагменты добавляются в FragmentStatePagerAdapter, который затем добавляется в ViewPager.

+0

Ответ можно найти здесь. http://stackoverflow.com/q/9363072/827110 –

+0

Я не вижу, как ответ применим. По-видимому, предполагается, что фрагменты добавлены другим способом из моего, используя FragmentTransaction.add(). – abc32112

+0

и как вы добавляете фрагмент в макет мероприятия? – 2Dee

ответ

4

Если вы храните ссылку на свой FragmentStatePagerAdapter и указатель Fragment в поле зрения, вы можете вызвать getItem(int position) на свой FragmentStatePagerAdapter, который вернет фрагмент.

+1

Это работает, и это * много * проще, чем некоторые другие предложения, которые я видел в других потоках. – abc32112

+1

Рад, что это работает для вас! Счастливое кодирование;) – 2Dee