2012-10-29 2 views
0

전화 버튼이 나를 당황하게합니다. 이 질문은 여러 번 묻지 만 해결 방법이 없습니다. 그래서 내 요구 사항에 따라 다시 묻습니다.Android : 전화 버튼 다시

나는 홈 화면 활동이 있습니다. 3 개의 활동을 호출합니다. 차례로 각각 2 개의 활동을 호출합니다.

내가이 방법을 탐색 가정

홈> ACT1> SubAct1a> SubAct1b> 홈 지금 ACT3에서> ACT2> 홈> ACT3

(홈 버튼을 통해) 내가 BACK 버튼 전화를 누를 때, 나는 집에 도착한다. 이 시점에서 필자의 요구 사항은 다시 버튼을 누르면 응용 프로그램을 종료해야합니다. 그러나 무엇을 어떻게하는 것이이

ACT2> 홈처럼 간다> SubAct1b> SubAct1a> ACT1> 그 응용 프로그램을 종료하기 전에 홈> EXIT가

그래서 사용자가 BACK 여러 번을 누르면된다.

HOME 키를 누르면 옵션이 나타나지만 BACK이 올바르게 작동하기를 원합니다.

나는 집 활동이 코드 조각이 -하지만 그것은 단지가 있었다 이전 활동에 반환 모든

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     finish(); 
     System.exit(0); 
    } 

    return super.onKeyDown(keyCode, event); 
} 

에서 작동하지 않습니다.

+0

는 단지 현재 activity.Other 활동이 여전히 실행 완료 때문입니다. – juned

답변

0

당신은 반환해야 사실, 이미이 상황을 처리 시스템, 당신은 당신의 집 활동을 시작할 때

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     finish(); 
     System.exit(0); 
     return true; 
    } 

    return super.onKeyDown(keyCode, event); 
} 

이, 맑은 최고 플래그를 설정하는 시도를 ... 말할

Intent intent = new Intent(this, HomeActivity.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 
+0

나는 그걸 또한 시도했다. 그러나 그것은 작동하지 않습니다. 항상 마지막 활동으로 되돌아갑니다. – Jasma

+0

그런 식으로 뒤쪽 키가 작동하는 방식입니다. 당신이 달성하고자하는 것을보다 명확하게 보여줄 수 있습니까? – Simon

+0

Intent.FLAG_ACTIVITY_NEW_TASK를 업데이트 된 대답으로 사용하려고 시도하십시오. – Nermeen

0

이 시도 : - t을 추가 할 수

@Override 
public void onBackPressed() { 
      Intent i=new Intent(currentclass.this,Home.class) 
    startActivity(i); 
    finish(); 
    super.onBackPressed(); 
} 
1

시도 당신의 onCreate()

Intent intent = new Intent(getApplicationContext(), Home.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 
0

한 활동에서 다른 활동으로가는 동안 이전 활동을 끝내십시오. 다음

다시 버튼을 무시하고 사용자가 그것을 누르면 현재 활동을 마친 다음 문제가 해결 될 것 같아요.

Intent i=new Intent(currentclass.this, Act1.class) 
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(i); 
    finish(); 

그리고 마지막으로

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

    return true; 
}