Ответ 1
Я не понимаю, почему люди голодают на ваш вопрос. Fragments
могут быть очень запутанными, особенно для начинающих. Чтобы понять вашу проблему, вы должны узнать, что такое Fragment
и как они используются.
Для начала, View
- это то, что существует на экране. Примеры включают: TextView
, EditText
, Button
и т.д. Они размещаются внутри XML-макетов. Эти макеты отображаются с помощью Activity
.
Теперь Fragment
- это не View
. Он вообще не существует на экране. Вместо этого это класс, который просто управляет "макетом" - подобным виду Activity
. Если вам нужен вид, возвращаемый вашим фрагментом onCreateView()
, вы можете напрямую использовать findViewById()
в своей Activity
.
Если вам нужна ссылка на ваш фрагмент, есть два возможных способа сделать это:
1) Если вы добавили Fragment программно, как это
getFragmentManager()
.beginTransaction()
.replace(R.id.fragment_container_viewgroup, myFragment, FRAGMENT_TAG)
.commit();
Вы можете использовать:
MyFragment myFragment = (MyFragment) getFragmentManager().findFragmentByTag(FRAGMENT_TAG);
2) Если вы добавили фрагмент внутри XML-макета, например:
<fragment android:name="com.example.android.fragments.HeadlinesFragment"
android:id="@+id/fragmentContainer"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent" />
Вы можете использовать это:
getFragmentManager().findFragmentById(R.id.fragmentContainer);
В основном, у каждой Activity есть класс FragmentManager
который поддерживает все активные Fragments
, и есть два способа их поиска: использование уникальной TAG, которую вы передаете, пока показываете фрагмент, или передаете идентификатор контейнера, где был добавлен фрагмент.