4

나는 함께 살아야하거나 죽어야하는 활동 쌍을 가지고 있습니다. 기본적으로 AlphaActivity는 일부 작업을 수행 한 다음 BetaActivity에 대한 의도 (startActivityForResult())를 전달합니다. BetaActivity가 완료되면 GammaActivity에 대한 의도 (startActivity())를 발송 한 다음 finish()을 호출합니다. 마무리하자마자 AlphaActivity의 onActivityResult() 메서드를 호출하기를 기대했지만 그럴 수 없었습니다. 내 디자인은 AlphaActivity의 onActivityResult() 안에 있으며 finish()이라고합니다. 내 계획에 따르면 GammaActivity에 도달하면 사용자가 AlphaActivity 또는 BetaActivity로 돌아갈 수 없습니다. 그러나 현재 뒤로 버튼은 사용자를 AlphaActivity로 안내합니다.onActivityResult의 finish 활동이 작동하지 않습니다.

실제로 작동하지 않을 수있는 이유에 대해 관심이 많으므로 실제로 작동하지 않는 이유가 있지만 여기에 대해 설명하는 것은 의미가 없습니다.

편집 :

이 코드는 모든 꽤 표준 물건입니다

: 베타 내부에서 알파

private void startBetaActivity() { 
    Intent intent = new Intent(this, BetaActivity.class); 
    startActivityForResult(intent, Constant.EXIT_CODE); 

} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    if (resultCode == RESULT_OK) { 
     if (requestCode == Constant.EXIT_CODE) { 
      this.finish(); 
     } 
    } 
} 

내부에서

:

if (success) { 
      startGammaActivity(); 
      finish(); 
     } 
+0

당신이 묘사 한 것이 효과가 있습니다. BetaActivity를 시작한 코드를 게시 한 다음 끝낼 수 있습니까? –

+0

'BetaActivity'의 결과로 무엇인가를해야합니까? 왜'AlphaActivity'는'BetaActivity'를 시작할 때 그냥'finish()'할 수 없습니까? – codeMagic

답변

6

을 넣어 매니페스트 AlphaActivity로 돌아갈 필요가 없습니다 경우

if (success) { 
     startGammaActivity(); 
     setResult(RESULT_OK); 
     finish(); 
    } 

가 아니면 방금 필요가 있다고 생각 호출되지 않은 :

if (success) { 
     startGammaActivity(); 
     setResult(Activity.RESULT_OK); //add this 
     finish(); 
} 
4

내 관점에서 당신은이 작업을 수행해야 ,

  1. AlphaActivity는 X 요청 코드와 결과를
  2. BetaActivity 자신의 작업을 수행하고 setResult (Y, Z)를 호출 및 통화 종료()
  3. AlphaActivity는 requestCode가 X, 같은 ResultCode Y 및 데이터 Z와 onActivityResult를 실행을 BetaActivity 시작 . X와 Y는 다음 예상하는 사람이 GammaActivity를 시작하고 마침내 AlphaActivity onActivityResult를 제대로 작동하지 않기 때문에 당신은 BetaActivity에 GammaActivity을 시작해서는 안 AlphaActivity

에 마무리()를 호출하는 경우.

+0

나는 입력을 좋아한다. +1. – learner

4

당신은 setResult()는 BetaActivity에서 다음 두 활동에 android:noHistory=true

+0

내 대답을 편집했습니다. –

+0

입력을 주셔서 감사합니다. 특히 'android : noHistory = true'에 대한 비트입니다. 나는 다른 사람을 받아 들였다. +1 – learner

+1

당신은 옳은 일을했습니다. 나는 그를 너무 뽑았습니다. 그런데 onBackpress에 setResult를 설정했다면 super()를 호출하기 전에 setResult를 호출해야합니다. –

관련 문제