我是Android和片段的新手,所以我假设我错过了一些重要的东西。
我有一个主要活动和2个片段,第二个替换第一个取代活动。我提交了一个替换事务,但是由于某种原因,每次按下后退按钮(也是第二个片段)时,我都会忘记调用addToBackStack(null)
,应用程序返回桌面屏幕,应用程序可以通过最近的应用程序获得屏幕,始终显示主要活动。
为什么会这样?
MainActivity.java
...
else if (id == R.id.action_settings) {
FragmentTransaction fragmentTransaction = getFragmentManager()
.beginTransaction();
fragmentTransaction.setCustomAnimations(R.anim.enter, R.anim.exit);
fragmentTransaction.replace(R.id.MainLayout,
new SettingsFragment());
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
return true;
}
SettingsFragment.java
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState){
...
@Override
public void onClick(View v) {
FragmentTransaction fragmentTransaction = getFragmentManager()
.beginTransaction();
fragmentTransaction.replace(R.id.MainLayout,
new SelectBackgroundFragment());
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
});
答案 0 :(得分:0)
您需要在活动中覆盖onBackPressed:
@Override
public void onBackPressed() {
if (getFragmentManager().getBackStackEntryCount() > 0) {
getFragmentManager().popBackStackImmediate();
} else {
super.onBackPressed();
}
}