jal*_*039 47 android handler android-intent android-activity
在我的应用程序的某些部分,有一个这样的活动结构:
Activity A
是我的家庭活动,我在每个流程或流程后回来.
Activity B
是一个简单的确认活动.
Activity C
是另一项确认活动.
Activity D
做一些过程,最后它将结果返回到我的家庭活动(Activity A
).
Activity B
并且C
:
finish()
并且什么都不做.finish()
我正在考虑使用startActivityForResult()
但我从来没有用过它来通过多个活动传递结果.
我还想通过一个handler
(创建Activity A
)调用一些方法Activity A
并执行Activity D
...
我怎么能实现它?
Nic*_*ckT 60
您可能希望使用意图标志FLAG_ACTIVITY_FORWARD_RESULT,如Intent
启动活动B和C时所述
public static final int FLAG_ACTIVITY_FORWARD_RESULT
自:API级别1
如果设置并且此意图用于从现有活动启动新活动,则现有活动的回复目标将转移到新活动.这样,新活动可以调用
setResult(int)
并将结果发送回原始活动的回复目标.
这样A应该收到从D发回的额外内容中发回的任何数据
Bri*_*uis 10
是的,很棒的格式.你可以 - 并且可能应该 - startActivityForResult()
从活动A,B和C中调用(并且不要finish()
马上).在B和C中,您可以检查成功的结果finish()
,并将结果传回A.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if((resultCode == RESULT_OK) && (requestCode == MY_RESULT_CODE)) {
setResult(RESULT_OK, data);
finish();
}
}
Run Code Online (Sandbox Code Playgroud)
如果您希望B和C无论如何都消失,请执行以下操作:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
setResult(resultCode, data);
finish();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10756 次 |
最近记录: |