我阅读了有关此主题的线程,但它直到不起作用。
这是我在 onCreate 方法中的代码。
if (savedInstanceState==null){
WeatherFragment weatherFragment = (WeatherFragment) Fragment.instantiate(this, WeatherFragment.class.getName());
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
fragmentTransaction.add(R.id.container_small, weatherFragment);
fragmentTransaction.commit();
}
然后我替换该 fragment 。
FrameLayout fl;
if (findViewById(R.id.container2) != null)
fl = (FrameLayout) findViewById(R.id.container2);
else
fl = (FrameLayout) findViewById(R.id.container_small);
SettingsFragment settingsFragment = (SettingsFragment) Fragment.instantiate(this, SettingsFragment.class.getName());
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.container_small, settingsFragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
现在我按下后退按钮,应用程序不会返回到第一个 fragment 。
知道为什么吗?
最佳答案
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
if(getFragmentManager().getBackStackEntryCount()!=0)
getFragmentManager().popBackStack();
else
}
您需要重写 onBackPressed() 方法
关于android - 在 android 中替换 fragment 时 addToBackstack 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29076128/