我开发了三项被称为活动A,活动B和活动C的活动。首先,活动A是我的主要活动,当应用程序启动时,活动A被创建。之后,我将移动到活动B startActivity(this,ActivityB.class)
,这里没有问题。问题是,当我想从活动B移动到活动C,并且我想从活动C获取数据时,但是有时我可以获取它并且有时我无法获取它并转移到活动AI会将我的代码片段放在问题上,我怎么能确定我可以一直提取数据?如何解决这个跳转到之前关于startActivityForResult和onActivityResult的活动?
从Activiy移动到活动B.
Intent intent = new Intent(this,ActivityB.class);
intent.putExtra(User.USER_ID,id);
activity.startActivity(intent);
从活动B移动到活动ç
Intent intent = new Intent(this,ActivityC.class);
startActivityForResult(intent, REQUEST_CODE);
从活动Ç移动到活动乙与数据。
Intent returnIntent = new Intent(this,ActivityB.class);
Bundle bundle = new Bundle();
bundle.putByteArray("data",data);
returnIntent.putExtras(bundle);
setResult(Activity.RESULT_OK,returnIntent);
finish();
在活动B,我处理未来数据为
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode,resultCode,data);
if(requestCode == REQUEST_CODE && resultCode == Activity.RESULT_OK){
try {
Bundle bundle = data.getExtras();
byte[] photo = bundle.getByteArray("data");
setPhoto(photo);
} catch (IOException e) {
e.printStackTrace();
}
}
}
此代码的工作fine.However有时完成活动C,应用程序直接跳到活动A,我想以后以确保应用程序必须从活动C传递到活动B.
关于Activit y B生命周期:首先,所有的okey活动都会上升到onResume(),当startActivityForResult被调用时,它会保持onPause()。有时候,从Activity C回来后,我说,它可以正常工作,因为Activity B正在爬到onResume(),但是有时候没有任何生命周期日志消息,并且直接传递到Activity A而不会损坏到Activity B.
你不需要Intent returnIntent = new Intent(this,ActivityB.class);意向returnIntent = new Intent()就够了... – Andrey
@ ruan65谢谢评论,不过问题依然存在。 – user3751548
我可以假设你setPhoto()方法抛出一个异常(有时如果照片过大或...无论什么),已处理的关闭B,所以A进入前... – Andrey