当前位置: 首页 > 知识库问答 >
问题:

在使用addToBackStack的碎片交易后点击返回按钮不做任何事情

强金鑫
2023-03-14

我希望能够通过使用addToBackStack()来逆转替换FragmentTransaction

FragmentTransaction fragmentTransaction = getActivity().getSupportFragmentManager().beginTransaction();         
Fragment scheduleFragment = new ScheduleFragment();     
fragmentTransaction.replace(R.id.content_container, scheduleFragment, "scheduleFragment");
fragmentTransaction.addToBackStack("scheduleFragment");
fragmentTransaction.commit();

但是在那之后,点击返回按钮什么也做不了。

从医生那里,它应该逆转交易。

我错过了什么?

共有3个答案

徐安康
2023-03-14

我已经有一段时间了,但我希望这能帮助别人。

fragmentTransaction。如果扩展AppCompatActivity,则addToBackStack(null)将不起作用。它在活动中运行良好。我找不到原因。

欧阳学真
2023-03-14

尝试fragmentTransaction。addToBackStack(null)的参数addToBackStack()是返回状态的可选名称,您不使用replace()方法中的标记,它只是片段的可选标记。你可以在这里了解更多。

洪河
2023-03-14

正确的方法是使用onBackPressed()方法捕获应用程序中的back事件,然后使用popBackStack()来“弹出”backStack。例如:

public void onBackPressed()
{
    // Catch back action and pops from backstack
    // (if you called previously to addToBackStack() in your transaction)
    if (getSupportFragmentManager().getBackStackEntryCount() > 0){
        getSupportFragmentManager().popBackStack();
    }
    // Default action on back pressed
    else super.onBackPressed();
}

PD:抱歉耽搁了回答,但我刚刚看到你的问题。希望有帮助!

 类似资料:
  • 2.返回按钮的点击监听 在聊窗顶部有一个返回按钮,在返回时可以添加其他事件,使用的接口如下: Ntalker.getInstance().setOnBackBtnListener(new OnBackBtnClickListener() { @Override public void OnBackBtnClick() { Toast.make

  • 问题内容: 我有2页: page1.php: -具有带文本框和“提交”按钮的表单。例如: -用于将文本框的值存储到数据库的php和mysql代码。将值提交到数据库后,JavaScript会将页面重定向到。例如: page2.php -mysql从数据库检索数据并显示在此页面上。 问题: 当我按“后退”按钮时,浏览器将弹出警告消息,提示您将重新提交表单。单击“返回”按钮时如何防止重新提交表单?我是否

  • 我开始创建一个应用程序,它使用一个活动(导航抽屉)和许多片段。但我无法使用工具栏上的“后退”按钮从片段中导航回来。硬件后退按钮工作正常。我知道我需要覆盖选项ItemSelected,捕捉android。R、 id.home,检查后堆栈中是否有内容,然后弹出它。在更改片段后,“burger”按钮变为“back arrow”,但当我单击它时,选项ItemSelected将打开NavigationDra

  • 问题内容: 我正在尝试创建使用此lambda函数单击的按钮的列表: 似乎有点工作,但它会立即打印按钮文本,即它不等待用户单击按钮。 关于如何使其对按钮单击做出响应的任何想法? 问题答案: 试图在lambda中完成所有这些操作是错误的方法。简直太令人困惑了,即使不是不可能做您想做的事情。而是创建一个可以完成工作的方法,并仅将lambda用作调用该函数的一种方式:

  • 嗨,我已经在应用程序抽屉中创建了片段,现在当我按下一个片段上的后退按钮时,它正在关闭应用程序。

  • 编辑:底部的解决方案 这是一个跳棋游戏。单击一个按钮后,它等待单击第二个按钮与之交换。然而,有时你可能不想移动那个按钮,但一旦你点击了它,就没有回头路了,因为我无法禁用它。 在这里的其他帖子中,我看到人们使用 这只是使它在第一次单击后不可见。 这什么都干不了。 这也没什么用。编辑:所有这些方法都用true和false进行了尝试。 私有无效交换(){ 但你也需要 这样它就重新启用了它,或者其他什么,