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

导航抽屉中的onBackPress()

赵光赫
2023-03-14

我有一个导航抽屉活动,其中有四个片段都很好。我还有另一个活动,我应该调用一个片段,它与导航抽屉活动有关。我已经修复了从另一个单独的活动中调用片段的问题。这里真正的问题是,如果我在导航抽屉活动中从碎片B上按back,它会返回到主碎片a,如果我从碎片a上按back,它会显示碎片B,实际上应该从应用程序中退出,它不应该显示碎片B。

我试过很多东西,比如:getActivity()。onBackPressed()和覆盖导航抽屉活动中的onBackPressed()。

另一件事,如果我添加getActive(). onBackPked()它的工作正常...问题...它影响片段B,片段B的onCreateView()没有被调用,它只是显示片段的视图并使用以前的包而不是更新。

这是我的代码。。。

例如,将其保留为活动A:

从活动A当我按回从设备和当我按下前一个按钮...因为我不能调用导航抽屉片段直接从不同的活动我传递一个意图到导航活动和从那里去片段...

Intent intent = new Intent(getApplicationContext(), Navigation.class);
            intent.putExtra("SELECTEDVALUE", 2);//1 for fragament A use 2 for fragment B
            intent.putExtra("StorePos",position);
            startActivity(intent);
            finish();

这是我的导航抽屉活动代码:

try {
        Bundle extras = savedInstanceState != null ? savedInstanceState : getIntent().getExtras();
        int selectedValue = extras.getInt("SELECTEDVALUE");
        position = extras.getInt("StorePos");

        if(selectedValue == 2)
        {
            Bundle bundle = new Bundle();
            bundle.putInt("StorePosition", position);
            CreateNewOrder createNewOrder = new CreateNewOrder();
            createNewOrder.setArguments(bundle);
            FragmentTransaction tx2 = getSupportFragmentManager().beginTransaction();
            tx2.replace(R.id.content_frame, createNewOrder);
            tx2.commit();                
        }

    }
    catch (Exception e)
    {

    }

CreateNewOrder()是我在导航活动中的片段,下面是按下后退按钮时来自CreateNewOrder的代码:

view.setFocusableInTouchMode(true);
    view.requestFocus();
    view.setOnKeyListener(new View.OnKeyListener() {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_BACK) {
                FragmentTransaction tx = getFragmentManager().beginTransaction();
                tx.replace(R.id.content_frame, new Dashboard());
                tx.commit();
                return true;
            }
            return false;
        }
    });

共有1个答案

孟沛
2023-03-14

最简单的方法是保留一个静态变量,该变量保存当前正在工作的活动,然后在片段内部的backpress上检查该变量,并编码backpress上应该发生的事情

 类似资料:
  • 有人能告诉我如何创建活动到这个主要活动,导航抽屉将看到在所有他们?我需要使用这个特定的MainActivity代码。我不需要使用碎片,只要3个简单的活动将添加到这个抽屉。 NavDrawer布局:

  • 我在将与和组合时遇到布局问题。 问题是,NavigationDrawer及其内容隐藏在工具栏后面。我已经做了很多研究,尝试了很多重组,但没有一个“解决方案”能解决我的问题。 在这个Webm小视频中可以找到一个演示:https://www.dropbox.com/s/i5zfc2x2ts2fws7/navigation_drawer_stackoverflow32523188.webm?dl=0 基

  • 有人知道如何实现一个滑动菜单像一些顶级应用程序今天吗? 其他堆栈溢出问题还没有关于如何做到这一点的答案,所以我正在尝试收集尽可能多的信息来帮助其他人。我在下面提到的所有应用程序都很好地实现了幻灯片菜单。 只有点击左上角的G+标识,才能从第一屏进入第二屏。注意,整个屏幕从它的位置移动,并且get被推到屏幕的右侧(包括操作栏)。要回到第一个屏幕,您可以将右侧滑回焦点,也可以再次单击G+图标。 您可以使

  • 我有一个程序,我想实现一个滑动菜单。 首先,我尝试了导航抽屉导航抽屉,这是我想要的,因为: 1)它不推屏幕,它覆盖它2)当我点击按钮上左它打开菜单3)当我尝试点击屏幕上的另一个 我不想有一个按钮向上左边,我希望用户点击一个按钮从屏幕和每次不同的滑动菜单出现。 我也尝试了jfeinstein10滑动菜单,但它不覆盖屏幕,它只是推开它,他们告诉我,这是不可能改变的。但另一方面,它是容易的,在某些方面更

  • 我所拥有的 我有一个导航抽屉和一个浏览寻呼机。查看寻呼机有5个片段。我在视图页面的每个片段中放置了一个图像视图。 问题 我看到,每当我将图像视图放在片段中并尝试打开导航抽屉时,动画都非常缓慢和滞后。即使我试着把它关上,它也非常滞后。 但是,如果我删除ImageView,则导航像往常一样平滑。 我需要放置ImageView,因为它非常重要。请给出一些解决方案,如我如何打开导航抽屉

  • 实际上,我正在我的应用程序中使用新的架构组件,并且我已经设置了导航组件。我有一个导航抽屉,我想用它。我已经设置好了,但我面临一些问题: 1-抽屉不会自动关闭。菜单正常工作并导航到正确的位置,但导航后不会关闭。我必须添加一个目的地ChangedListener才能自己关闭它。 在代码实验室里,抽屉自动关闭,我真的不明白为什么。 2-向上按钮打开抽屉。当我导航到非顶级片段时,菜单图标变为向上箭头,但当