我有一个视图寻呼机作为具有多个片段的主要活动。
此视图分页器中的一个片段启动另一个执行操作然后完成的活动(将其视为选择照片然后将其保存到数据库中)。
第二个活动完成后,我调用finish(),这会将我带回到我的视图寻呼机中的上一个片段。
但我需要知道包含视图寻呼机的活动是否已启动,因为第二个活动的finish()
被调用来执行某些操作(例如加载照片)。
我不知道如何将此信息传递回上一个活动,我想避免使用带有额外标志的Intent(CLEAR_ACTIVITY_TOP),因为这意味着我必须在每个其他视图中重新创建状态寻呼机片段。
这可能吗?有没有办法找出哪个活动finish()
导致当前活动变为活动状态?
非常感谢,
答案 0 :(得分:2)
看看startActivityForResult
。 Activity page的“开始活动和获得结果”部分下的更多文档。
有时您希望在活动结束时从结果中获取结果。例如,您可以启动一项活动,让用户在联系人列表中选择一个人;当它结束时,它返回被选中的人。要执行此操作,请使用标识该调用的第二个整数参数调用startActivityForResult(Intent,int)版本。结果将通过onActivityResult(int,int,Intent)方法返回。
答案 1 :(得分:1)
当您第一次进入第二项活动时,请按此调用。
arrayThatINeed = response.names;
请求代码是一个整数,可以让您确定稍后会返回结果的活动。
每当您完成第二项活动时,请在致电Intent intent = new Intent(this, YourSecondActivity.class);
startActivityForResult(intent, requestCode);
之前发回所需的额外数据,例如
finish()
返回第一个活动,覆盖Intent intent = new Intent();
intent.putExtra("yourData", yourVariable);
setResult(RESULT_OK, intent);
finish();
方法,并对返回的数据执行任何操作。
onActivityResult()
现在您应该能够识别返回的活动,并发回您可能需要的任何其他数据!
答案 2 :(得分:1)
您必须使用startActivityForResult(),您将在Parent Activity中的onActivityResult中获得结果。像这样的东西。
// Fragment in First Activity
Intent i = new Intent(this, SecondActivity.class);
getActivity().startActivityForResult(i, 1);
//SecondActivity if sending back results
Intent returnIntent = new Intent();
returnIntent.putExtra("result",result);
setResult(RESULT_OK,returnIntent);
finish();
//SecondActivity if not sending results.
Intent returnIntent = new Intent();
setResult(RESULT_CANCELED, returnIntent);
finish();
处理结果
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if(resultCode == RESULT_OK){
String result=data.getStringExtra("result");
}
if (resultCode == RESULT_CANCELED) {
//Write your code if there's no result
}
}
}