Ответ 1
Внутри подкласса Fragment
вы должны использовать getFragmentManager
вместо getSupportFragmentManager
. Вы получите поддержку, если импорт из библиотеки поддержки.
Я нашел сообщение Не удается разрешить метод getSupportFragmentManager() Я хочу фрагментировать как активность. потому что я хочу использовать Карты во время прокрутки вкладки.
public class PETAcikarangsukatani extends Fragment {
Context context;
private static final LatLng SUKATANI = new LatLng(-6.171327, 107.178108);
private static final LatLng WRPOJOK = new LatLng(-6.222411, 107.162158);
private static final LatLng PILAR = new LatLng(-6.257033, 107.156472);
private static final LatLng CIKARANG = new LatLng(-6.256073, 107.143984);
GoogleMap googleMap;
final String TAG = "PathGoogleMapActivity";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.activity_path_google_map, container, false);
context = rootView.getContext();
SupportMapFragment fm = (SupportMapFragment)getSupportFragmentManager()
.findFragmentById(R.id.map);
googleMap = fm.getMap();
Внутри подкласса Fragment
вы должны использовать getFragmentManager
вместо getSupportFragmentManager
. Вы получите поддержку, если импорт из библиотеки поддержки.
В моем случае, Я убедился, что класс Фрагмент импортируется из
android.support.v4.app.Fragment
Не от
android.app.Fragment
Затем я использовал
getActivity() getSupportFragmentManager();.
И теперь его работа. Если я использую экземпляр активности, который я получил в onAttach(), также не работает.
Расширяет FragmentActivity вместо Активность
Замените getSupportFragmentManager()
на getFragmentManager()
если вы работаете в API 21.
ИЛИ
Если ваше приложение поддерживает версии Android старше 3.0, убедитесь, что вы настроили свой проект Android с помощью библиотеки поддержки, как описано в разделе Настройка проекта для использования библиотеки, и на этот раз используйте getSupportFragmentManager()
.
Используйте getActivity().getSupportFragmentManager()
Также вы можете использовать AppCompatActivity
вместо Activity.
Тогда getSupportFragmentManager()
будет работать.
А также не забывайте, что ваша тема приложения расширяет тему AppCompat в этом случае
В соответствии с документацией getSupportFragmentManager() присутствует только внутри класса AppCompatActivity. Его нет в классе Activity. Поэтому убедитесь, что ваш класс расширяет класс AppCompatActivity.
public class MainActivity extends AppCompatActivity {
}
getFragmentManager()
просто попробуйте this.it работал для моего случая
getSupportFragmentManager()
не является частью Fragment
, поэтому вы не можете получить его здесь таким образом. Вы можете получить его от родителя Activity
(так что в onAttach()
как можно раньше), используя обычный
activity.getSupportFragmentManager();
или вы можете попробовать getChildFragmentManager(), который находится в области Fragment, но требует API17 +
вы должны использовать
getActivity.getSupportFragmentManager() like
//in my fragment
SupportMapFragment fm = (SupportMapFragment)
getActivity().getSupportFragmentManager().findFragmentById(R.id.map);
У меня также есть эти проблемы, но они решены после добавления getActivity()
до getSupportFragmentManager
.
Если вы получаете "Не удается разрешить метод getSupportFragmentManager()", попробуйте использовать
this.getSupportFragmentManager()
Он работает для меня при работе с DialogFragments в android
Если вы создаете экземпляр класса android.support.v4.app.Fragment
, вам нужно вызвать getActivity().getSupportFragmentManager()
, чтобы избавиться от проблемы, которую невозможно решить. Однако официальные документы Android по Fragment от Google имеют тенденцию игнорировать эту простую проблему, и они по-прежнему документируют ее без префикса getActivity()
.
Я пробовал все выше, но никто не работал
Наконец, попробовал это мой собственный
getBaseActivity().getFragmentManager()
и работает..:)
Для меня я уверен, что импортировать v4, как это:
import android.support.v4.app.DialogFragment;
Затем использовал:
getActivity().getFragmentManager()