생성자에서 전달 된 Context에서 startActivityForResult()를 호출하는 2 개의 Activity 클래스와 1 개의 Non-Activity 클래스가 있습니다. FirstActivity -> NonActivity -> SecondActivity -> FirstActivity입니다. SecondActivity에는 결과적으로 FirstActivity에 전달되어야하는 사용자 정의 객체의 ArrayList가 있습니다. 문제가 있습니다. onActivityResult()가 호출되면 resultCode는 RESULT_CANCELED이지만 setResult (RESULT_OK, intent)가 호출 되더라도 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