假设您有一个使用 mObject 对象的活动 A (例如此处是API的客户端)。
此对象构造函数检查用户是否已被识别,如果不是,则启动登录表单活动( B ),提示用户输入凭据,以便API可以只记录他。
你怎么能这样做?
我认为只是在构造函数中要求Context,但实际上它并没有实现 startActivityForResult 所以我要么必须强制转换它,要么实际上要求一个Activity对象。
即使我这样做,结果也会在 onActivityResult 回调(活动A)上发送,而不是在对象中发送(理想情况下,我想“同步”执行此操作:返回活动时,将其存储在对象中并继续执行构造函数。)
那么这样做的好方法是什么?
答案 0 :(得分:1)
不,在构造函数中执行此操作是不合理的。 让非Activity类使用Activity的Context来启动另一个活动也不是一个好主意。
最简单的方法是让活动A使用mObject来确定是否需要登录,如果是,则活动A应该启动活动B(如果需要将数据从活动B传递回活动A,则startActivityForResult就可以了)。
如何将登录数据传达给mObject取决于您,但您可能希望在活动A和活动B之间以某种方式共享mObject。
有几种方法可以做到这一点。 您可以将mObject作为Application类的成员。 或者你可以让mObject只是一个具有静态数据和静态方法的类。 或者您可以使用依赖注入框架,并将mObject注入到两个活动中。