Не вдається викликати getSupportFragmentManager () з активності


79

У мене є діяльність, яка має фрагмент.

XML:

 <fragment android:name="com.example.androidcalculator.ResultFragment"
            android:id="@+id/result_fragment"
            android:layout_weight="1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

І я хочу викликати метод з ResultFragment з методу в Activity, але getSupportFragmentManager "не існує":

FragmentManager fragMan = getSupportFragmentManager();

Як я можу це вирішити?

Відповіді:


189

Ваша активність не поширює FragmentActivity з бібліотеки підтримки, тому метод відсутній у суперкласі

Якщо ви націлюєтесь на api 11 або вище, замість цього ви можете використовувати Activity.getFragmentManager .


11
FragmentManagerзараз застаріло.
CoolMind

Не зовсім так, ви повинні використовувати AndroidX FragmentManager.
ueen

1
Я використовую ComponentActivity тут, а не AppcompactActivity, а в componentActivity getupportManger () видає помилку anyiIdea
Суніл Чаудхарі,


18

отримати поточну активність від батьків, використовуючи цей код

getActivity().getSupportFragmentManager()

також можна спробувати FragmentManager fragMan = getFragmentManager ();
MrPickles7,

4

імпорт

import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;

20
Тут імпорту недостатньо - вам доведеться успадкувати FragmentActivityтакож.
Олександр Фарбер,

4

Просто використовуйте

 FragmentManager fm = getActivity().getSupportFragmentManager();

Завжди пам’ятайте, коли отримуєте доступ до роздування фрагментів у MainLayout, використовуйте Casting або getActivity().



2

Це спрацювало для мене. Запуск android API 19 і вище.

FragmentManager fragMan = getFragmentManager();


0

Замість

extends Fragment

використання

extends android.support.v4.app.Fragment 

Це працює для мене. для * API14 і вище


-1

я використав FragmentActivity

TabAdapter = new TabPagerAdapter(((FragmentActivity) getActivity()).getSupportFragmentManager());
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.