Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 片段未打开“后退”按钮上的上一个片段_Java_Android_Android Fragments_Back Stack_Fragment Backstack - Fatal编程技术网

Java 片段未打开“后退”按钮上的上一个片段

Java 片段未打开“后退”按钮上的上一个片段,java,android,android-fragments,back-stack,fragment-backstack,Java,Android,Android Fragments,Back Stack,Fragment Backstack,我一直在努力实现一个超级简单的应用程序布局,我的MainActivity在其onCreate方法中打开Fragment#1,然后单击某个项目时,Fragment#1打开Fragment#2 现在,当我从我的main活动打开Fragment#1时,我将Fragment#1添加到backbackbackback。打开Fragment#2后,当我按下后退按钮时,第一次单击不起任何作用,然后第二次单击将我发送回登录页面,跳过Fragment#1和MainActivity 当我点击Fragment#2上的

我一直在努力实现一个超级简单的应用程序布局,我的
MainActivity
在其
onCreate
方法中打开
Fragment#1
,然后单击某个项目时,
Fragment#1
打开
Fragment#2

现在,当我从我的
main活动
打开
Fragment#1
时,我将
Fragment#1
添加到backbackbackback。打开
Fragment#2
后,当我按下后退按钮时,第一次单击不起任何作用,然后第二次单击将我发送回登录页面,跳过
Fragment#1
MainActivity

当我点击
Fragment#2
上的后退按钮时,它会打开
Fragment#1
备份?

MainActivity
打开
Fragment#1
) (
Fragment#1
打开
Fragment#2
) 编辑 我应该提到的是,我曾试图亲自处理这件事。我尝试将其添加到我的
MainActivity
,但没有改变行为:

@Override
    public void onBackPressed() {
        if (getSupportFragmentManager().getBackStackEntryCount() == 0) {
            this.finish();
        } else {
            getSupportFragmentManager().popBackStack();
        }
    }
再创造

Kotlin

   val backpress = requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner, true) {
                        // Handle the back button event

}
Java

    OnBackPressedCallback callback = new OnBackPressedCallback(true /* enabled by default */) {
        @Override
        public void handleOnBackPressed() {
            // Handle the back button event
        }
    });
    requireActivity().getOnBackPressedDispatcher().addCallback(this, callback);

您可以在相关章节中提供您的背部操作。

您建议我如何放置处理程序?类似于
FragmentManager.popBackStack()
?您能澄清一下吗?这就是我在创建
Fragment#1
时在
onCreate
中实现的几乎完全相同的代码,因为它们没有解释如何解决问题,所以不建议在堆栈溢出时使用代码。请编辑您的答案,以解释此代码的作用以及它如何回答问题,以便对OP以及具有类似问题的其他用户有用。
getSupportFragmentManager().beginTransaction().replace(R.id.frag_frame, fragment).addToBackStack("text").commit();
    OnBackPressedCallback callback = new OnBackPressedCallback(true /* enabled by default */) {
        @Override
        public void handleOnBackPressed() {
            // Handle the back button event
        }
    });
    requireActivity().getOnBackPressedDispatcher().addCallback(this, callback);
getSupportFragmentManager().beginTransaction().replace(R.id.frag_frame, fragment).addToBackStack("text").commit();