2012-08-28 3 views
13

다른 활동에서 사용자가 을 다시 눌렀 기 때문에 내 활동이 표시되는지 알고 싶습니다. 라이프 사이클에서 나는 확실하게 나에게 그 정보를주는 어떤 콜백이라도 식별 할 수 없었다. .내비게이션으로 인해 활동이 앞섰는지 확인

onRestart()이 작동하지 않습니다. 또한 Apps Task가 전면에 공개되면 발동됩니다. onResume() 같은 이유로 작동하지 않습니다.

나는 거기에 간단한 해결책이 있다고 가정 하겠지만, 아마 안드로이드에서는 간단한 일들이 꽤 심해질 수 있습니다.

+1

연구 [이 답변] (HTTP : // 유래. com/a/10493384/779408) – breceivemail

+1

조금 늦었지만 onRestart가 작동하지 않는 이유는 무엇입니까? 그것은 나를 위해 일하는가? – osrl

답변

14

두 번째 활동을 startActivityForResult(Intent, int)으로 호출하고 두 번째 활동의 onBackPressed()을 덮어 쓰고 setResult()RESULT_CANCELED으로 설정하십시오. 마지막으로, 첫 번째 활동을 onActivityResult()에 잡으십시오.

코드 예제 :

활동 1 :

Intent i = new Intent(Activity1.this, Activity2.class); 
startActivityForResult(i, 0); 

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

    if (requestCode == 0) { 
     if (resultCode == RESULT_CANCELED) { 
       // user pressed back from 2nd activity to go to 1st activity. code here 
     } 
    } 
} 

활동 2 :

@Override 
public void onBackPressed() { 
    setResult(RESULT_CANCELED); 
    finish(); 
} 
+1

나는 약 15 개의 액티비티를 가지고 있지만 startActivityForResult를 호출 할 수있는 옵션이없는 AndoridAnnotations를 사용하고 있지만 (아직 출시 예정 임에도 불구하고) 좋은 ​​답변이므로 ... 다른 아이디어를 기대하고 있습니다 ... – Jakob

+1

AndroidAnnotations가 당신은 이것과 같은 정상적이고 기본적인 안드로이드 구조를 사용하지 않습니까? 그런 도구를 사용하지 않을 것입니다 ... – Ridcully

+1

아니요, 표준 안드로이드 구조를 사용할 수는 있지만 이미 15 개의 활동이 있습니다. 대답은 단지 "그것을하는 방법"일 것입니다. – Jakob

관련 문제