【发布时间】:2020-04-03 19:15:39
【问题描述】:
我有一个在线订购系统,用户必须进行支付交易,它至少需要两个步骤。用户选择项目并移动到新屏幕,这是一个新的活动,用于选择付款。 这个新的活动有不同的支付方式,每种支付类型都开辟了自己的活动。 回收站视图适配器(项目) 第一项活动(选择付款) 第二个活动(支付处理) 现在从成功支付交易后的第二个活动开始,我想回到有物品的回收站视图适配器。
请提出实现这一目标的正确方法。
【问题讨论】:
我有一个在线订购系统,用户必须进行支付交易,它至少需要两个步骤。用户选择项目并移动到新屏幕,这是一个新的活动,用于选择付款。 这个新的活动有不同的支付方式,每种支付类型都开辟了自己的活动。 回收站视图适配器(项目) 第一项活动(选择付款) 第二个活动(支付处理) 现在从成功支付交易后的第二个活动开始,我想回到有物品的回收站视图适配器。
请提出实现这一目标的正确方法。
【问题讨论】:
使用CLEAR_TOP 标志从第三个活动开始。
参考this。
编辑:这就是你制作单身人士的方式
object MySingleton {
var data: MyDataObject? = null
}
在你的第三个活动中,你可以做
MySingleton.data = MyDataObject(/* populate */)
那么你在第 1 次阅读它
MySingleton.data.<property here>
【讨论】:
startActivityForResult 或使用两个活动可以同时访问的对象。如果您要使用 Fragments,我会建议使用 Activity 范围内的共享视图模型。如果您正在使用活动,则可以使用 Singleton 对象来保存数据。您还可以将它作为有效负载传递到启动意图中,并在第一个活动中解析它。
你可以从 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()
【讨论】: