【问题标题】:Return back to first activity from third and skipping the second activity从第三个活动返回第一个活动并跳过第二个活动
【发布时间】:2020-04-03 19:15:39
【问题描述】:

我有一个在线订购系统,用户必须进行支付交易,它至少需要两个步骤。用户选择项目并移动到新屏幕,这是一个新的活动,用于选择付款。 这个新的活动有不同的支付方式,每种支付类型都开辟了自己的活动。 回收站视图适配器(项目) 第一项活动(选择付款) 第二个活动(支付处理) 现在从成功支付交易后的第二个活动开始,我想回到有物品的回收站视图适配器。

请提出实现这一目标的正确方法。

【问题讨论】:

    标签: android android-activity


    【解决方案1】:

    使用CLEAR_TOP 标志从第三个活动开始。

    参考this

    编辑:这就是你制作单身人士的方式

    object MySingleton {
        var data: MyDataObject? = null
    }
    

    在你的第三个活动中,你可以做

    MySingleton.data = MyDataObject(/* populate */)
    

    那么你在第 1 次阅读它

    MySingleton.data.<property here>
    

    【讨论】:

    • 我不想开始第一个活动。我想回到适配器,选择用户点击的相同项目。
    • 这就是这个标志的作用。如果 Activity 已经在运行(在这种情况下是这样),它只会将其带回前面并删除其顶部的所有 Activity。
    • 抱歉这里没有说清楚。返回到第一个活动时,我想调用一个方法。我觉得应该是通过回调的方法来实现的,但是我不知道怎么做。
    • 如果您需要将信息传递回活动,那么您可以使用startActivityForResult 或使用两个活动可以同时访问的对象。如果您要使用 Fragments,我会建议使用 Activity 范围内的共享视图模型。如果您正在使用活动,则可以使用 Singleton 对象来保存数据。您还可以将它作为有效负载传递到启动意图中,并在第一个活动中解析它。
    • 感谢您的解释。你能告诉我如何通过代码制作单例对象吗?真的很好。
    【解决方案2】:

    你可以从 flag 开始意图

     val intent = Intent(this, Activity1::class.java)
     intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP
     startActivity(intent)
    

    或者您可以在开始新活动后拨打finishAffinity()

     val intent = Intent(this, Activity1::class.java)
     startActivity(intent)
     finishAffinity()
    

    【讨论】:

      猜你喜欢
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 2015-05-26
      • 1970-01-01
      • 2016-03-21
      • 2017-06-14
      • 1970-01-01
      • 2016-06-17
      相关资源
      最近更新 更多