我有一个包含名为OneFragment的片段的viewpager活动。
Onefragment包含一个recyclerview,在项目上点击一个名为DescriptionFragment的片段打开。
这是我从适配器打开DescriptionFragment的方式:
Fragment descriptionFragment = new DescriptionFragment ();
FragmentTransaction transaction = mContext.beginTransaction();
transaction.replace(R.id.framelayout, descriptionFragment).addToBackStack(null).commit();
问题: 当我点击背景按钮时,应用程序就会完成。
我想在backpress上关闭DescriptionFragment并返回OneFragment
答案 0 :(得分:2)
查看 getFragmentManager()。popBackStack()方法(有几种方法可供选择)
http://developer.android.com/reference/android/app/FragmentManager.html#popBackStack()
详细说明,这是我的解决方案(置于活动中):
@Override
public void onBackPressed(){
FragmentManager fm = getFragmentManager();
if (fm.getBackStackEntryCount() > 0) {
Log.i("MainActivity", "popping backstack");
fm.popBackStack();
} else {
Log.i("MainActivity", "nothing on backstack, calling super");
super.onBackPressed();
}
}
答案 1 :(得分:1)
在进行像这样的交易时将片段添加到堆栈
transaction.addToBackStack(OneFragment.getClass().getName);
并且您的交易代码应该看起来像这样
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction transaction= fragmentManager.beginTransaction();
transaction.replace(..............);
transaction.addToBackStack(null);
transaction.commit();