1

생성자에서 전달 된 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"); 
     } 
    } 
} 
+0

코드가 호출되고 있습니까? super.onBackpressed(); 그 위에 있습니까? –

+0

그게 문제였습니다. 나는 아래의 대답을 받아 들였다. – jelic98

답변

1

당신은 단순히 어떤 일이 일어나고 것은 "super.onBackPressed는()"결과 코드에 "RESULT_CANCELED"를 설정하고 활동을 마무리되어 있다는 것입니다 onBackPressed 방법

super.onBackPressed(); 

를 제거해야합니다.

+0

OMG! 정말 고맙습니다. – jelic98

+0

환영합니다! :) –