1

私はコンストラクタで渡されたContextからstartActivityForResult()を呼び出す2つのアクティビティクラスと1つの非アクティビティクラスを持っています。 FirstActivity - > NonActivity - > SecondActivity - > FirstActivityのようになります。 SecondActivityには結果としてFirstActivityに渡す必要があるカスタムオブジェクトのArrayListがあります。問題があります。 setResult(RESULT_OK、intent)が呼び出された場合でも、onActivityResult()が呼び出されるとresultCodeはRESULT_CANCELEDになりますが、RESULT_OKにはなりません。ここに私のコードです:startActivityForResult()はRESULT_CANCELEDを返します

NonActivity

public void showActivity() { 
    Intent intent = new Intent(request, ActivityKorak.class); 
    intent.putExtra("data", fields); 

    request.startActivityForResult(intent, 1); 
} 

SecondActivity

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 

    Intent intent = new Intent(); 
    intent.putExtra("data", fields); 
    setResult(Activity.RESULT_OK, intent); 

    finish(); 
} 

FirstActivity

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent intent){ 
    super.onActivityResult(requestCode, resultCode, intent); 
    if(resultCode != Activity.RESULT_CANCELED){ 
     if(requestCode == 1) { 
      Bundle extras = intent.getExtras(); 
      ArrayList<CustomInput> fields = (ArrayList<CustomInput>) extras.getSerializable("data"); 
     } 
    } 
} 
+0

コードは呼び出されていますか? super.onBackpressed();それ以上ですか? –

+0

それは問題でした。私は以下の答えを受け入れました。 – jelic98

答えて

1

あなたは、単に何が起こっているonBackPressed方法

super.onBackPressed(); 

を削除する必要があります「super.onBackPressedは()」「RESULT_CANCELED」に結果コードを設定し、あなたの活動を終えていることです。

+0

OMG!どうもありがとうございます。 – jelic98

+0

あなたの歓迎! :) –

関連する問題