Невозможно вызвать 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 getsupportManger () выдает ошибку anyiIdea
Сунил Чаудхари
56

расширить класс AppCompatActivityвместоActivity

Самад
источник
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().

Нитеш Ратод
источник
3

расширять FragementAvtivityвместоActivity

Дилип Кришнан
источник
2

Это сработало для меня. Запуск Android API 19 и выше.

FragmentManager fragMan = getFragmentManager();
Ник Парми
источник
1
getCurrentActivity().getFragmentManager()
Сезар Алонсо
источник
0

Вместо

extends Fragment

использовать

extends android.support.v4.app.Fragment 

У меня это работает. для * API14 и выше

Пивоварня
источник
-1

я использовал FragmentActivity

TabAdapter = new TabPagerAdapter(((FragmentActivity) getActivity()).getSupportFragmentManager());
pitu
источник