如何在Fragment和Activity中使用onBackPressed()?

时间:2018-03-15 18:40:50

标签: android android-studio-3.0 onbackpressed

我正在创建LoginActivity-> OtherActivity->片段1-> Fragment_2。当我单击Back Button时,我又回到了Fragment_1,当我再次单击BackButton时,我在LoginActivity中为什么?

我想在片段_1中单击BackButton后返回MainActivity,然后在下一个单击BackButton(在MainActivity中)之后我想回到主屏幕

我该怎么做?

在MainActivity中我有:

@Override
    public void onBackPressed() {

        if (getFragmentManager().getBackStackEntryCount() > 0 ) {
            getFragmentManager().popBackStack();
        } else {
            super.onBackPressed();
        }
    }

2 个答案:

答案 0 :(得分:0)

添加片段时调用addToBackStack。例如:

FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.container, fragment);
ft.addToBackStack(backStateName);
ft.commit();

此外,在启动OtherActivity之前,请在LoginActivity上调用finish()

答案 1 :(得分:0)

首先在导航到OtherActivity时从堆栈中删除LoginActivity。在演示片段之后使用@ ahomphophone的答案。之后,返回堆栈应该按预期工作,而不需要覆盖' onBackPressed'。

注意:您提供的堆栈上没有MainActivity。

更新:如果您想留在OtherActivity中使用此代码

@Override
public void onBackPressed() {

    if (getFragmentManager().getBackStackEntryCount() > 0 ) {
        getFragmentManager().popBackStack();
    }
}