我有一个 HomeFragment
,它有一个按钮,单击时会调用以下内容:
Fragment frag = new CustFragment();
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction().replace(R.id.home_container, frag).commit();
然后在我的 FragmentActivity
中,也就是上面提到的 fragment ,我有:
@Override
public void onBackPressed() {
getFragmentManager().popBackStack();
super.onBackPressed();
}
这就是我尝试过的方法,但是如果我在 frag
fragment 上并按下后退按钮,它不会返回到最后一个 fragment (HomeFragment
)。相反,它会尝试返回到上一个 Activity,但由于没有任何 Activity (即上一个 Activity 调用了 finish()
),它只会转到 Android 主屏幕。
我做错了什么?
PS:如果我不清楚,请在下方评论,我会尽力澄清。
最佳答案
改变
@Override
public void onBackPressed()
{
getFragmentManager().popBackStack();
super.onBackPressed();
}
到
@Override
public void onBackPressed()
{
if(getSupportFragmentManager().getBackStackEntryCount() > 0)
getSupportFragmentManager().popBackStack();
else
super.onBackPressed();
}
和
fragmentManager.beginTransaction().replace(R.id.home_container, frag).commit();
到
fragmentManager.beginTransaction().replace(R.id.home_container, frag).addToBackStack(null).commit();
关于java - 恢复上一个 fragment onBackPressed()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24487756/