【问题标题】:Navigation component - back button exits the app导航组件 - 后退按钮退出应用
【发布时间】:2021-05-16 10:35:16
【问题描述】:

我有一个问题,按下后退按钮总是退出应用程序。

这是一个单一的活动应用程序,其中初始加载的屏幕是两个选项卡 viewpager2 布局,带有 2 个单独的导航图,每个选项卡一个。
viewpager 根据位置调用两个“空白”片段(因为 viewpager createFragment() 需要返回一个片段 - 这些“空白”片段每个都包含一个 NavHostFragment 即android:name="androidx.navigation.fragment.NavHostFragment"

“主”导航图设置了app:defaultNavHost="true",另一个设置了app:defaultNavHost="false" 100% 明确。
我尝试将两者都设置为 true(对后退按钮没有影响),一个为 true,一个根本没有输入,没有任何效果。 我已将所有操作设置为在导航图中的目的地之间流动,并且前向导航工作正常。我只添加了合乎逻辑的“前进”动作,我的目标是稍后根据需要使用“popUpTo”和“popUpToInclusive”。

我的代码中的任何地方都没有调用onBackPressed()(我搜索了所有项目文件)。我的测试设备是 API26,开发人员选项没有任何工具可以对后退按钮进行编程(因为我正在疯狂寻找错误并认为那里检查 id)。

Viewpager2 是否会干扰导航组件的后台堆栈 - 我试图自己找出这一点,但没有取得多大成功。

编辑

我搜索了更多内容,发现几乎相同的问题已经解决 - 简而言之,添加一个 viewpager 作为具有两个嵌套导航图的根导航会干扰片段返回堆栈,并且需要 viewpager 适配器设置主导航片段每次更改片段时。请注意,在撰写本文时,该库仍处于 alpha 阶段。

请把下面的这篇文章作为我如何对我自己的问题的答案进行编码 - 一旦我完成了代码,我就把它作为答案发布(如果允许的话)。

How to navigate back from fragments inside NavHostFragment of ViewPager2?

【问题讨论】:

    标签: android android-navigation android-viewpager2


    【解决方案1】:

    如果您没有 onBackPressed 则在您的活动中调用此方法,并在从上一个活动中调用当前活动时检查当前活动是否有完成方法。

    如果没有任何效果,则在当前活动中调用 onBackPressed 方法并实现双击以退出 onBackPressed 方法。

    查看此帖子以双击退出:Clicking the back button twice to exit an activity

    谢谢,希望对你有帮助。

    【讨论】:

    • 嗨,伙计,感谢您花时间回答。这并没有解决我的问题,我目前不想实现“双击退出”。再次感谢
    猜你喜欢
    • 1970-01-01
    • 2015-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-07
    • 1970-01-01
    相关资源
    最近更新 更多