我有一个主要活动,扩展到 AppCompatActivity ,其中包含 FrameLayout ,我曾经用欲望的片段替换它。
然而,有一段时间,我打电话给另一个活动只是为了显示一些特定信息,并且需要将该信息传回主要活动,并显示最后一个片段。因此,我尝试使用FragmentManager,而片段显示透明;另外,如果我使用它,我将失去主要活动的FrameLayout id。
为了澄清,我将提出一个计划:
是否可以使用onBackPressed来解决它?
更新
下面是我的onActivityResult,它调用 startActivityForResult ,它在片段中使用。
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 2) {
if (resultCode == Activity.RESULT_OK) {
execusaoVistoria.fotos = allFotos;
Intent startPreview = new Intent(getContext(), PreviewActivity.class);
startPreview.putExtra("path", fileName.toString());
startPreview.putExtra("ExecusaoVistoria", execusaoVistoria);
startActivityForResult(startPreview, 10);
}
} else if (requestCode == 10) {
if (resultCode == Activity.RESULT_OK) {
allFotos.add((Fotos) data.getBundleExtra("Bundle").getParcelable("foto"));
}
}
}
这里是来自Activity的代码调用setResult:
Intent i = new Intent();
i.putExtra("Bundle", bundle);
setResult(Activity.RESULT_OK, i);
finish();
答案 0 :(得分:4)
您应该使用startActivityForResult而不是startActivity。
在您的MainActivity中,您将收到回电
onActivityResult()
在这里,您可以获取所需的信息。
答案 1 :(得分:0)
根据您希望通过它实现的目标,您可以做两种解决方案。您可以在片段中使用startActivityForResult
打开第二个活动,并在片段的onActivityResult
方法中处理结果。
第二种是使用相同的活动方法处理活动内部的结果。
在这两种情况下,您要做的就是致电startActivityForResult(yourIntent, yourRequestCode)
打开请求的活动。在已打开的活动中,当您完成并获得结果后,您必须致电
Intent resultIntent = new Intent();
//in case you do not need to pass data back you can skip this
resultIntent.setExtra("extra_result", extraData);
setResult(resultCode,yourResultIntent);
finish();
当这返回上一个活动时,将使用您在启动活动时指定的请求代码和调用onActivityResult(resultCode,requestCode)
时设置的结果代码调用setResult
方法。
为了处理片段内的结果,您需要覆盖Activity中的onActivityResult
方法并调用super.onActivityResult
并覆盖片段内的方法。在这种情况下,您将在那里处理结果。
您需要注意的是调用结果的实际处理程序的startActivityForResult
。
如果您想查看基本互动的完整示例,可以在https://developer.android.com/training/basics/intents/result.html
进行检查答案 2 :(得分:0)
尝试使用片段中的意图作为 Intent i = new Intent(getActivity(),anotherActivity.class); startActivityForResult(ⅰ);
并且对于后退流程,将父活动声明为清单中的主要活动。