私はコンストラクタで渡された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");
}
}
}
コードは呼び出されていますか? super.onBackpressed();それ以上ですか? –
それは問題でした。私は以下の答えを受け入れました。 – jelic98