【问题标题】:On back return to first activity and not its parent返回第一个活动而不是其父活动
【发布时间】:2022-01-18 12:30:27
【问题描述】:

我有一个活动 A,一旦用户按下按钮,它就会打开活动 B。
我这样做是:

startActivity(intent)  
finish()  

活动 B 中的用户可以选择单击某个项目并导航到活动 C 或按返回按钮。
问题:
按下后退按钮时,我没有转到活动 A,而是转到其父项。
如何确保在返回导航时我转到 Activity A,而如果用户单击 Activity B 中的某个项目,他们最终会进入 Activity C?

【问题讨论】:

  • 删除finish()
  • @SagarBalyan:这不是说我从后面的活动 C 转到活动 A 吗?理想情况下,我只会从 B 回来去 A。从 C 回来时,去 A 的父母
  • 从 C 到 B,如果你按返回键,从你到 B。你还想要别的吗?
  • @SagarBalyan:我想从 C 转到 A 的父母。并在返回按钮上从 B 到 A
  • 然后参考@Raj的答案。

标签: android android-activity android-navigation


【解决方案1】:

只需添加

startActivity(intent) 

重定向到 Activity B 时不要调用 Finish()。它会解决您的后退导航问题。

【讨论】:

  • 那不是说我从后面的活动C转到活动A吗?理想情况下,我只会从 B 回来去 A。从 C 回来时,去 A 的父母
【解决方案2】:

覆盖 onBackPressed() 方法

@Override
    public void onBackPressed() {
        super.onBackPressed();
        //Set your intent
        Intent intent = new Intent(currentAct.class,Activity A);
        startActivity(intent);

    }

【讨论】:

  • 更正:Intent intent = new Intent(currentAct.this,Activity_A.class);
【解决方案3】:

假设您有 4 个活动:A、B、C 和 D。
用户从 A -> B -> C ,即从活动 C 用户转到 B onBackPress 然后 A.
但是如果用户去 A -> B -> C -> D,这里 onBackPress 用户去 Activity A。

要实现这一点,您可以遵循这种方法

  1. Activity A 开始Activity B - 无需调用finish()
  2. Activity B 开始Activity C - 无需调用finish()

这里你的 backpress 工作正常,因为每个 Activity 都在堆栈中

  1. Activity C 开始Activity D - 在这种情况下不调用finish() / 或调用finish() 无关紧要,因为用户永远不会回到Activity C
  2. Activity D 的 OnBackpress(),重写方法 (onBackPress()),并开始一个新的 Activity A 并清除 backstack (intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); )

或者对于Activity A,您可以使用launch modes,创建活动A SingleTask,因此当您再次从Activity D 启动Activity A 时,将调用相同的活动A 实例来清除所有任务(活动)顶

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-20
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 2023-04-02
    • 2012-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多