2013-03-15 10 views
6

두 가지 활동, MainActivityNextActivity이 있습니다. MainActivity에서 NextActivity으로 이동 한 다음 Intent을 사용하면 MainActivity으로 돌아갈 수 있습니다. 그런 다음 OnCreate과 다른 것들이 호출되며 모든 것이 다시 초기화되는 것처럼 보일 것입니다. 저는 NextActivity에 들어가기 전의 상태로 돌아가고 싶습니다.Android 이전 활동으로 돌아 가기

나는 내 전화기에서 실제 뒤로 버튼을 정확히 사용하면 이것이 실현된다는 것을 깨달았다.

다시 버튼과 같은 활동으로 돌아가는 방법?

추신. finish()을 테스트했지만 도움이되지 않았습니다.

+3

정말로 테스트를 마쳤습니까? 방법? 그 방법은 – lelloman

+2

입니다. finish()가 최선의 방법입니다. 도움이되지 않는다는 것은 무엇을 의미합니까? 어쩌면 기억력이 떨어지고 안드로이드가 액티비티를 재구성해야합니까? – Zielony

+0

이전 활동을 계속 사용할 수 있다고 보장 할 수 없다고 생각합니다. 가비지 수집을 위해 환경 설정이나 일종의 스토리지를 사용하여 상태를 저장하는 것이 좋습니다. – Davos555

답변

25

방금 ​​대신 다시 MainActivity에 갈 사용 IntentonBackPressed()를 호출 할 수 있습니다 .. 예를 들어

:

public void onClick() { 
    onBackPressed(); 
} 

참고 : finish()가 .. 정확히 당신이 원하는 일을해야

+0

답은 @Jonas입니다. –

4

가 가정 당신은 두 가지 활동 A와 B가 있습니다. 당신은 A에서 B로 이동합니다. A는 배경으로갑니다.

B가 백 스택에 놓이고 B가 포커스를 얻습니다. 뒤로 버튼을 클릭하면 활동 B가 다시 스택에서 튀어 나옵니다. 활동 A가 재개됩니다.

참고 : 한 번에 여러 작업을 백그라운드에서 수행 할 수 있습니다. 그러나 사용자가 여러 백그라운드 작업을 동시에 실행하는 경우 시스템이 메모리를 복구하기 위해 백그라운드 작업을 파괴하기 시작할 수 있으므로 작업 상태가 손실 될 수 있습니다. 활동 상태에 대해서는 다음 절을 참조하십시오.

http://developer.android.com/training/basics/activity-lifecycle/starting.html. 한 번 파괴 된 활동은 다시 만들어야합니다. 화면 방향이 바뀌면 활동이 멈추고 다시 만들어집니다.

http://developer.android.com/training/basics/activity-lifecycle/starting.html.

http://developer.android.com/guide/components/tasks-and-back-stack.html. 백 스택 작동 방식을 살펴 봐야합니다.

귀하의 경우에 마무리가 작동해야합니다 (뒤로 버튼을 눌러).

참고 : onCreate() 메서드 내에서 finish()를 호출 할 때 시스템은 onPause() 및 onStop()을 이미 호출 한 후 onDestroy()를 호출합니다.

세 번째 활동 C가 있고 활동 A로 가고 싶다고 가정 해보십시오.

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
if (keyCode == KeyEvent.KEYCODE_BACK) { 
    onBackPressed(); 

} 

return super.onKeyDown(keyCode, event); 
} 

public void onBackPressed() { 
Intent myIntent = new Intent(ActivityC.this, MainActivity.class); 
myIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);// clear back stack 
startActivity(myIntent); 
finish(); 
return; 
} 
관련 문제