1. ホーム
  2. android

[解決済み] フラグメントからstartActivityForResult()を実行し、子アクティビティが終了すると、フラグメントのonActivityResult()が呼び出されない。

2022-04-21 18:50:40

質問

FirstActivity.Java があります。 FragmentA.Java を呼び出します。 startActivityForResult() . 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() が呼び出されることはありません。

解決方法は?

を記述する必要があります。 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);