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

使用后退按钮从片段返回到主活动

蒋寒
2023-03-14

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

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (event.getAction() == KeyEvent.ACTION_DOWN) {
        switch (keyCode) {
            case KeyEvent.KEYCODE_BACK:
                if (myWebView.canGoBack()) {
                    myWebView.goBack();
                } else {
                    finish();
                }
                return true;
        }
    }
    return super.onKeyDown(keyCode, event);
@Override
public void onBackPressed() {
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    if (drawer.isDrawerOpen(GravityCompat.START)) {
        drawer.closeDrawer(GravityCompat.START);
    } else {
        super.onBackPressed();
    }
if (fragment != null) {
        FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
        ft.replace(R.id.content_main, fragment);
        ft.addToBackStack("close");
        ft.commit();




    }

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    drawer.closeDrawer(GravityCompat.START);

共有1个答案

何晗昱
2023-03-14

当您将片段添加到某个容器或使用xml对其进行膨胀时,它不会添加到backstack中,因此,当“On Backpressed”发生时,它会从backstack中抛出最后一个活动--这是承载片段并因此退出应用程序的活动。我想这篇文章:Android:碎片背栈

可以帮助您,它解释了如何将片段事务添加到backstack中:

FragmentManager fragmentManager = getFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    fragmentTransaction.replace(..............);
    fragmentTransaction.addToBackStack("fragment transaction name, not required");
    fragmentTransaction.commit(); 
 类似资料:
  • 我想从片段到活动使用返回按钮使用工具栏返回图标。 碎片是我的抽屉菜单项 我该怎么做?

  • 我有一个活动,当我的应用程序首次启动时开始(只有一次)。该活动允许用户选择主题。然后当他们按下完成键时,我完成了这项活动。这会将用户引导到主活动。但是当用户按下返回按钮时,它会返回到第一次启动的活动(我使用完成()关闭的活动)。但我想要的是,应用程序应该关闭时,用户按下返回按钮从主活动(总是)。我在两个类中都重写了onBackPress。 这两个类中的onBackPressed方法如下所示: 主活

  • 我正在编写一个android应用程序,使用框架布局和片段作为其组件。 我有3个片段:、、。 在社区片段中,用户按下一个按钮来创建一个任务。然后TaskFromFrament用替换FrameLayout中的社区片段。因为在那之后,我想用后退按钮返回社区片段。 在TaskFormFragment中,用户按create按钮创建任务。然后TaskFragment打开,没有添加堆栈,因为我不想在按下后退按钮

  • 我的主要活动导致第二个活动。如果用户按下手机的后退按钮,应用程序将返回主活动。 发生这种情况时,我如何执行某些操作? (我知道我可以在SecondActivity中添加代码,将功能添加到back按钮,以便它将结果传递给MainActivity,但我不想在每个可能导致返回MainActivity的屏幕上都这样做。) 也许是另一种提问方式,我如何知道MainActivity是因为按下后退按钮而显示的,

  • 我有一个玩家活动和浮动玩家(服务),点击后退按钮后,玩家活动关闭,浮动玩家开始行动,当我点击浮动玩家时,我想回到玩家活动,但没有再次运行创建方法。 我在StackOver Flow中读到了很多解决方案,特别是使用FLAG\u ACTIVITY\u CLEAR\u TOP和FLAG\u ACTIVITY\u SINGLE\u TOP标志,或者将android:launchMode=“singleTa

  • 我在活动C中有四个片段,它们的行为就像标签一样。我必须从一个片段转到一个新的活动X。现在我想回到从活动X到片段的片段。 这是我的主要活动 '公共类MainInterface扩展了ActionBarActivity{ } ' 下面是活动视图中的公共类讨论。onclick侦听器{ ###