来自 Fragment 并完成子 Activity 的 startActivityForResult(),不会在 Fragment 中调用 onActivityResult() [英] startActivityForResult() from a Fragment and finishing child Activity, doesn't call onActivityResult() in Fragment
问题描述
FirstActivity.Java
有一个 FragmentA.Java
调用 startActivityForResult()
.SecondActivity.Java
调用 finish()
但 onActivityResult
永远不会被调用,这是用 FragmentA.Java
编写.
FirstActivity.Java
has a FragmentA.Java
which calls startActivityForResult()
.
SecondActivity.Java
call finish()
but onActivityResult
never get called which is
written in FragmentA.Java
.
FragmentA.Java
代码:
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
// some code
Intent i = new Intent(getActivity(), SecondActivity.class);
i.putExtra("helloString", helloString);
getActivity().startActivityForResult(i, 1);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
getActivity();
if(requestCode == 1 && resultCode == Activity.RESULT_OK) {
//some code
}
}
SecondActivity.Java
代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//some code
Intent returnIntent = new Intent();
returnIntent.putExtra("result", result);
setResult(Activity.RESULT_OK,returnIntent);
finish();
}
我试过调试代码,但是 onAcitvityResult()
永远不会被调用.
I have tried debugging the code, but onAcitvityResult()
never get called.
推荐答案
你必须在你的 FirstActivity.Java
中编写 onActivityResult()
如下
You must write onActivityResult()
in your FirstActivity.Java
as follows
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}
所以这将调用您片段的 onActivityResult()
So this will call your fragment's onActivityResult()
解决方案是将 getActivity().startActivityForResult(i, 1);
替换为 startActivityForResult(i, 1);
the solution is to replace getActivity().startActivityForResult(i, 1);
with startActivityForResult(i, 1);
这篇关于来自 Fragment 并完成子 Activity 的 startActivityForResult(),不会在 Fragment 中调用 onActivityResult()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!