Я не понимаю, почему люди голодают на ваш вопрос. Fragments
может быть очень запутанным, особенно для начинающих. Чтобы понять вашу проблему, вы должны узнать, что такое Fragment
и как они используются.
Для начала, View
- это то, что существует на экране. Примеры включают: TextView
, EditText
, Button
и т. Д. Они размещаются внутри XML-макетов. Эти макеты показаны с использованием Activity
.
Fragment
не является View
. Он вообще не существует на экране. Вместо этого это класс, который просто управляет «макетом» - похожей на Activity
. Если вам нужен вид, возвращенный вашим onCreateView()
вашего фрагмента, вы можете напрямую использовать findViewById()
в своем Activity
.
Если вам нужна ссылка на ваш фрагмент, есть два возможных способа сделать это:
1) Если вы добавили фрагмент программно, как этот
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);
В принципе, каждая активность имеет FragmentManager
класс, который поддерживает все активные Fragments
, и есть два способа их нахождения: Используя уникальный тег, который вы проходите в то время как показывая фрагмент или передача идентификатора вида контейнера, в который был добавлен фрагмент.
Как добавить фрагмент? Через XML теги или с помощью FragmentManager в Java? –
Nachi
Я добавил их с помощью FragmentManager – Mohammad7G