小编典典

从 Fragment 开始ActivityForResult() 并完成子 Activity,不会在 Fragment 中调用 onActivityResult()

all

FirstActivity.Java有一个FragmentA.JavastartActivityForResult().
SecondActivity.Java调用finish()onActivityResult永远不会被调用,这是用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()未被调用。


阅读 223

收藏
2022-08-08

共1个答案

小编典典

你必须写onActivityResult()在你FirstActivity.Java的如下

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
   super.onActivityResult(requestCode, resultCode, data);
}

所以这将调用你的片段onActivityResult()

编辑: 解决方案是替换getActivity().startActivityForResult(i, 1);startActivityForResult(i, 1);

2022-08-08