У меня есть два фрагмента MapScreenFragment и SessionSetUpFragment, которые входят и выходят из моей активности MapsActivity. Я всегда сначала иду к MapScreenFragment, а затем на MapScreenFragment будет кнопка, которая вызывает MapsActivity и заменяет текущий фрагмент на SessionSetUpFragment. Таким образом, стек диспетчера фрагментов должен иметь SessionSetUpFragment, а затем MapScreenFragment. Когда я нажимаю кнопку возврата Android на SessionSetUpFragment, он показывает пустой экран, а onCreateView() или onResume() MapScreenFragment никогда не вызывается. Другой вызов кнопки «Назад» в Android закроет приложение. Как мне возобновить работу MapScreenFragment?
Изменить: если я изменю
getFragmentManager().popBackStack("sessFrag", FragmentManager.POP_BACK_STACK_INCLUSIVE);
to
getFragmentManager().popBackStack();
Проблема все еще существует, но у меня есть еще один пустой задний экран, который нужно просмотреть, прежде чем приложение закроется.
MapScreenFramget.java:
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_map, container, false);
Log.d(TAG,"onCreateView"); //Never gets called
}
@Override
public void onResume() {
Log.d(TAG,"onResume"); //Never gets called
super.onResume();
}
MapsActivity.java:
@Override
public void logIn(){
MapScreenFragment mapFrag = new MapScreenFragment();
getFragmentManager().beginTransaction().replace(R.id.mainContainer, mapFrag).addToBackStack("mapFrag").commit();
}
@Override
public void sessionSetUp(){
SessionSetUpFragment sessFrag = new SessionSetUpFragment();
getFragmentManager().beginTransaction().replace(R.id.mainContainer, sessFrag).addToBackStack("sessFrag").commit();
}
@Override
public void onBackPressed() {
if(fm.getBackStackEntryCount() > 0) {
Log.i(TAG, fm.getBackStackEntryAt(fm.getBackStackEntryCount() - 1) + " Popped! " + (fm.getBackStackEntryCount() - 1) + " stacks left!");
getFragmentManager().popBackStack("sessFrag", FragmentManager.POP_BACK_STACK_INCLUSIVE);
}else {
super.onBackPressed();
}
}