2013-05-09 6 views
0

두 가지 활동이 있습니다. 활동 A는 버튼을 누르면 활동 B를 시작합니다. 활동 B는 작성시 일부 데이터를로드합니다. 나는 B가 파괴되고 버튼 활동을 다시 눌러하지만 난 그냥 일시 정지 및 활동 A. 다시 연락 할 때 나는 시도 :활동을 일시 중지하고 이전 활동으로 돌아 가기

@Override 
public void onBackPressed() { 
    moveTaskToBack(true); 
} 

을하지만 홈 화면이 아닌 활동 A. 저를 얻을 수

+1

액티비티 B에서 'finish()'를 호출합니다. – FoamyGuy

+0

@FoamyGuy는 액티비티 B에서'finish()'를 호출하는 것이 바로 BACK 버튼의 기본 동작입니다. ActiviyB가 파괴됩니다. OP가 원하는 것은 아닙니다. –

+0

답변을 추가했지만 디자인에 결함이있는 것 같습니다. ActivityB가 일부 데이터를로드하고 그 데이터를 유지하려는 경우 정적 변수에 데이터를 어딘가에 저장해야하며, 그렇지 않으면 어떤 활동에서 액세스 할 수있는 '서비스'를 사용하여 해당 데이터를로드해야합니다. 데이터를로드했기 때문에 "활동을 유지"하려고하면 앱 디자인을 관리, 유지 및 이해하기가 어려워집니다. –

답변

4
당신이 바로 앞에 ActivityA을 가지고 싶다면

,이 작업을 수행 : A는 B가 배후에있을 것입니다 (표시)와 상단에 될 수 있도록

@Override 
public void onBackPressed() { 
    Intent intent = new Intent(this, ActivityA.class); 
    intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
    startActivity(intent); 
} 

이 활동 스택을 재 배열 할 것이다. 이제 사용자가 ActivityA에서 BACK을 클릭하면 기본 동작은 ActivityA를 완료하고 ActivityB로 돌아가는 것입니다.

+0

David 님, 이것은 아마도 작동하지 않을 것입니다 (http://stackoverflow.com/questions/11453724/bring-my-activity-back-to-the-top 참조). 실제로 새로운 활동이 생성되어 스택에 추가됩니다. – Trinimon

+0

@Trinimon 연결된 질문은 다른 작업 **을 앞쪽으로 가져오고 ** 동일한 작업 내에서 ** 작업을 재정렬하지 않는 것을 의미합니다 **. 이것들은 완전히 관련이없는 2 가지입니다. 당신이 말할 때 _ 사실 새로운 활동이 만들어져 스택에 놓여졌습니다. OP의 구성에서 실제로 이것을 시도해 보셨습니까? –

+0

예, A와 B 두 가지 활동으로 작은 데모 앱을 만들었습니다. 'A'는'BAG'에'FLAG_ACTIVITY_NEW_TASK','B'에'A'에'FLAG_ACTIVITY_REORDER_TO_FRONT'라고 부릅니다. 새로운 액티비티를 생성하고이를 스택 맨 위에 푸시했습니다. 그래서 그것은 제가 언급 한 포스트와 일치합니다. 뭔가 빠져 있니? – Trinimon

관련 문제