2011-05-11 2 views

답변

13

매우 간단합니다 : 활동 A의 활동 A.에게

+0

다시 버튼을 사용하여 **로 돌아갈 때 기록을 지우고 싶습니다. 그러나 A에 도달하는 유일한 두 가지 방법은 뒤로 버튼을 사용하거나 다른 활동에서 명시 적으로 활동을 시작하는 것입니다. 그러나 B 또는 C에서 A 작업을 시작할 때 언급 된 플래그를 사용하면 기록이 지워집니다. 그리고 버튼을 누르기 만하면 하나씩 지워지므로 내 대답이 여전히 문제를 해결해야합니다. – compostus

+0

나는 A (Home) 화면으로 돌아 가기 위해 백 버튼을 사용하고 있기 때문에 아무런 의미가 없다. – UMAR

+1

@UMAR : 뒤로 가기 버튼 만 사용하여 집을 가져 오는 경우, 이전 활동은 이동하는 동안 자동으로 기록에서 삭제되어야합니다. 그렇지 않니? – compostus

0

를 시작하는 데 사용 의도에 intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);를 사용하는이 시도 :

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

     return super.onKeyDown(keyCode, event); 
    } 

이 말은 다시 버튼을 누르 경우 활동이 finish() 있는지 확인해야합니다 에드. 이 액티비티가 스택 하단에있는 경우 finish 액티비티를 종료해야합니다.

0

나는 compostus가 true라고 생각하지만, 그렇지 않으면 A에서 startActivityForResult()를 사용하여 B를 시작하고 onActivityResult()에서받은 "message"를 처리 할 수 ​​있다고 생각합니다. 뒤로 버튼을 누르면 활동 B가 "CLOSE_ACTIVITY"메시지를 보냅니다. 활동 C의 활동
2의 선언에,
1 세트 clearTaskOnLaunch = "true"로 AndroidManifest를에 :

2

당신은 다음과 같은 작업을 수행 할 수

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

그렇다면 사용자가 다시 누르면 - 온다 홈 화면으로 돌아 가기 사용자가 응용 프로그램을 다시 시작하면 작업 스택이 지워지고 루트 활동이 시작됩니다. (A)

+0

위의 코드를 사용하면 맨 위 활동 등을 정리하기 위해 의도를 설정하지 않아도됩니다. 그냥 "moveTaskToBack"이 모든 것을 처리합니까? –

+0

예. 그것은 당신이 배경으로 작업을 이동하고 홈 화면을 표시 할 수 있습니다. (하지만이 작업을 위해 현재 활성 상태 인 C 활동). 사용자가 응용 프로그램을 다시 시작하면 clearTaskOnLaunch가 작동하고 루트 작업을 제외한 작업의 모든 활동이 제거되므로 A가 활성화되고 C가 삭제됩니다. – Arseniy

+0

이것은 나에게 효과가 없었습니다. 응용 프로그램을 마지막으로 다시 시작했을 때 페이지가 끊어지는 페이지가 계속 열립니다. –

관련 문제