2011-03-28 11 views
2

활동 스택에 대한 도움이 필요합니다. 내 응용 프로그램에서 활동 스택에서 활동을 표시하는 방법

난 내가 버튼 취소가 4 화면으로 이동 할 때 (6 개) 화면을 사용자가

1-->2-->3-->4--> 

에서 이동이

그 버튼을 사용자가 클릭 그것은 두 번째 화면과

로 이동해야 할 때

사용자가 키패드에서 뒤로 버튼을 클릭하면 이미 활성 스택 인 화면으로 이동해야합니다. 어떻게해야합니까?

예를 들어주십시오.

+0

나는 대답을 편집했습니다. FLAG_ACTIVITY_SINGLE_TOP은 (는) 이미 액티비티 스택에있는 첫 번째 화면으로 이동합니다. – pawelzieba

답변

0

onBackPressed()을 사용하고 필요한 활동을 시작하거나 다시 시도하는 의도 메커니즘. 사용자가 버튼을 클릭하면 화면에 btn을

+0

감사합니다 Madimir,하지만 onBackPressed()는 android 1.5에서 사용할 수 없습니다. –

+0

그런 다음 onKeyDown()을 사용하십시오. –

+0

하지만 이미 활동 스택에있는 1 개의 화면을 표시하고 싶습니다. –

0

// 돌아 가기 위해 4

Onclick(View v) 
{ 
if(v==Backbtn) 
{ 
finish(); 
startActivity(new intent(this,SecondActivity.class)); 
} 
} 

는 // 다시 키 누름 그냥 FLAG_ACTIVITY_CLEAR_TOP

을 사용하여 1 개 화면

public boolean onKeyDown(int keyCode, KeyEvent event) { 
     switch (keyCode) { 
     case KeyEvent.KEYCODE_BACK: 
      startActivity(new intent(this,FirstActivity.class)); 
        return true; 
     } 
     return super.onKeyDown(keyCode, event); 
    } 
+0

코드가 SecondActivity on Third를 시작하고 First on Fourth Activity를 시작합니다. 뒤로 버튼을 누르면 각각 위에 세 번째와 네 번째 활동이 표시됩니다. 호기심이없는 – pawelzieba

3

로 돌아갑니다 :

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

는 사용자가 다시 누르면 :

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     Intent intent = new Intent(ActivityD.this, ActivityA.class); 
     intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
     startActivity(intent); 
    } 
    return super.onKeyDown(keyCode, event); 
} 

이 코드 때문에 FLAG_ACTIVITY_SINGLE_TOP의 재현되지 않습니다 첫째 activity.The 활동에 사용자를 취할 것입니다. 액티비티가 이미 백 스택에 있으면 onNewIntent()가 호출되어 예를 들어 인 텐트의 데이터를 사용할 수 있습니다.

당신이 당신의 행동에 대한 기본 행동을 원한다면,이 깃발을 안드로이드 매니페스트에 활동 선언으로 넣으십시오.

+0

은 1.5에서 사용할 수 있습니까? 나는 그 국기를 알지 못해서 고마워. :) – Viren

+1

이 깃발은 API 1부터 사용 가능하다. :) – pawelzieba

관련 문제