2014-06-19 6 views
0

이것은 간단하게 들릴지 모르지만 나는 그것에 당황하고 있습니다. 검색했지만 찾지 못했습니다.Android Backbutton 두 가지 활동으로 돌아 가기

내 질문은 : 뒤로 버튼을 눌렀을 때 두 가지 활동으로 돌아 오는 방법은 무엇입니까? 이렇게 : 내가 활동 A, B 및 C (A -> B -> C) 있다고 가정 해 봅시다. 내가 달성하고자하는 것은 활동 C를하고 뒤로 버튼을 누르면 활동 A로 돌아와야합니다. B에서 누르고 다시 누르면 A로 돌아갑니다.

많은 액티비티가있는 프로젝트에 구현 될 수 있으므로 반환 할 클래스 이름을 설정할 필요가 없다고 가정합니다. 안드로이드가 자동으로 기록해야합니다. 이것을 달성하는 방법?

그 생성 된 활동 C의 콜백에 이전 활동 B뿐만 아니라 완료됩니다 있도록 가능한 솔루션은, 활동 B에서에 startActivityForResult()를 호출하면

답변

0

감사드립니다. 콜백 함수는 onActivityResult()라고하며, finish()를 호출하려고합니다.

예 :

ActivityB :

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

... 

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

ActivityC :

//do stuff 

이 방법, 당신이 (또는 마무리 (전화)) ActivityC 위로 누르면, 그것은 다시 호출 ActivityB의 onActivityResult() 함수는 두 함수를 모두 종료합니다.

+0

네, 사용해 보겠습니다. 나는 응답을 위해 돌아갈 것이다. 감사! – FathulAzis

+0

예, 작동합니다. 감사합니다. 나는이 방법에 대한 더 깊은 탐구를 할 것이다, 고마워! – FathulAzis

+0

의도 한대로 작동되어서 기쁩니다 :) 저는이 액티비티 스택을 어지럽히는 것이 싫어서이 솔루션이이를 우회합니다. – EpicPandaForce

0

onBackPressed 메서드를 재정의하고 원하는 작업에 인 텐트를 보낼 수 있습니다.

@Override 
public void onBackPressed() 
{ 
    // code here to send intent to the activity A 
} 

한가지는, 이것이 활동 스택과 잘 어울리는 지 확실하지 않지만 항상 시도해 볼 수 있습니다.

+0

아마도 FLAG_ACTIVITY_CLEAR_TOP 플래그로 작동 할 수 있습니다. – EpicPandaForce

+0

그 전에도 그랬지만, 액티비티 클래스 이름을 의도에 넣어야한다는 것을 의미합니다. 그 전에는 앱이 스스로를 기록해야한다고 말했습니다. 덕분에 – FathulAzis

0

활동 C에 대한 의도를 시작할 때 활동 B를 완료 한 다음 활동 스택에 활동 A가 있고 활동 C를 다시 누르면 활동 A가 표시됩니다.

그냥 Activity C의 onBackPressed를 무시하고 finish()합니다.

+0

할 수 있습니다. 활동 B가 다시 사용될 수 있도록 활동 스택에있을 필요는 없습니다. – Meenal

0

특수 효과 (FLAG_ACTIVITY_CLEAR_TOP)를 사용하여 되돌리려는 활동을 onBackButtonPressed에서 호출하여 그 사이의 다른 활동을 건너 뛰거나 제거 할 수 있습니다. 당신이 A로 다시 C에서 갈 수있는이 방법

참조 : http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP

나는이 마무리 (과 장난) 또는 반환 할 결과가없는 경우 결과에 대한 활동을 시작하는 것보다 더 나은 생각합니다.

0

A -> B -> C

Intent intent = new Intent(this, A.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 

Activity A에 대한 새로운 의도를 실행하고 스택에서 다른 모든 활동을 해제합니다.

관련 문제