Не удается вызвать getSupportFragmentManager() из действия


у меня есть деятельность, которая имеет фрагмент.

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();

Как я могу решить это?

10 69

10 ответов:

ваша деятельность не распространяется FragmentActivity из библиотеки поддержки, поэтому метод не присутствует в суперклассе

Если вы ориентируетесь на api 11 или выше, вы можете использовать активности.getFragmentManager вместо.

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

получить текущую активность от родителя, а затем с помощью этого кода

getActivity().getSupportFragmentManager()

импорт

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

Просто Использовать

 FragmentManager fm = getActivity().getSupportFragmentManager();

помните всегда при доступе к фрагменту раздувания в MainLayout использования Кастинг или getActivity().

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

это сработало для меня. Работает Android API 19 и выше.

FragmentManager fragMan = getFragmentManager();
getCurrentActivity().getFragmentManager()

Если вы пишете код, доза которого не существует в контексте фрагмента (активности), предположим, что адаптер, затем вы можете преобразовать свой контекст в адаптере в ActivityFragment, например:

FragmentActivity activity = (FragmentActivity) mContext; FragmentManager manager = activity.getSupportFragmentManager();

Я FragmentActivity TabAdapter = новый TabPagerAdapter (((FragmentActivity) getActivity ()).getSupportFragmentManager ());