2013-11-23 2 views
0

나는 앱을 처음 열 때 열리는 SplashActivity을 가지고 있습니다. 이것은 앱의 MainActvity으로 연결됩니다. 뒤로 버튼을 프로그래밍하여 대신 실행기로 이동합니다. SplashActivity.실행기로 돌아 가기 버튼 얻기

public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { 

     //what goes here?? 
    } 
    return super.onKeyDown(keyCode, event); 
} 

또는 내가 SplashActivity에서 MainActivity를 시작할 때 적절한 플래그를 설정하여이를 얻는다.

편집 : 나는, 내가 MainActivity로 리디렉션 다른 세 Activities

Intent i=new Intent(SplashActivity.this,MainActivity.class); 
       i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); 
       startActivity(i); 

사용, 그 SplashActivity이 시작되지 않습니다 보장하기 위해 대답의 한 부분을 생각

는, 나는을 제공 할 매번 MainActivity에서 실행기로 리디렉션 할 수있는 일관된 동작.

MainActivity--->Camera/Gallery--->ImagePreview--->ScannedResults-->image delete dialog-->MainActivity

EDIT2

나는 사용자뿐만 아니라 ImagePreview에서 이미지를 삭제 가능성이 있으므로이 ScannedResults, Camera 또는 ImagePreview로 돌아갈 수없는 MainActivity에서 back를 누릅니다.

+0

왜 의도를 사용하지 마십시오 – Gunaseelan

+0

@Gunaseelan 내 체크 아웃 arification, 게시물을 편집했습니다. – vamsiampolu

+0

'i.addFlags (Intent.FLAG_ACTIVITY_CLEAR_TASK);'이 줄을 제거한 후 시도하십시오. – Gunaseelan

답변

1

유는

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

을 사용할 수 있습니다하지만 당신은 그냥 응용 프로그램을 (여전히 배경에서 실행) 숨기려면 당신은

public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { 
     moveTaskToBack(true); 
    } 
    return super.onKeyDown(keyCode, event); 
} 
을 사용할 수 있습니다

잘하면 도움이 될 것입니다 ..

0

액티비티 SplashActivity 및 MainActivity가 2 개 뿐인 경우. 이 경우 SplashActivity에서 MainActivity를 시작한 직후 MainActivity에서 finish() 및 onBackPressed()를 호출하고 finish()를 호출합니다.

+0

내 게시물을 내 체크 아웃 – vamsiampolu

0

본질적으로 모든 활동에서 Launcher (기본 활동이 아니라고 가정하고 그렇지 않은 경우)로 이동하려고합니다. 이 경우 인 텐트를 사용하여 활동을 시작할 때마다 직후에 finish()를 호출하십시오.

Intent intent = new Intent(this, WhateverActivityYouWantToCall.class); 
startActivity(intent) 

//call finish() to end current activity 
finish(); 

편집 :이 돌아 가기 버튼을 눌러에서 발생 할 경우 말했다되는 것을, 당신은 onBackPressed 재정의 할 수

@Override 
public void onBackPressed() { 
    Intent quit = new Intent(Intent.ACTION_MAIN); 
    quit.addCategory(Intent.CATEGORY_HOME); 
    quit.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    startActivity(quit); 
    finish(); 
} 
+0

내 앱의 액티비티가 뒤로 버튼을 누르면 MainActivity로 리디렉션됩니다. MainActivity를 항상 다른 액티비티로 리디렉션하지 않고 실행기로 리디렉션하고 싶습니다. 내 앱에서 뒤로 탐색 MainActivity에서 다른 Activity로 돌아가는 탐색은 의미가 없으며 존재하지 않는 데이터를 나타낼 수 있습니다. – vamsiampolu

1

하면, 최근 사용에서 활동을 제외하면 android:excludeFromRecents를 사용하여도하지 않습니다 백 스택에 있기 때문에 사용자는 뒤로 버튼이나 뒤로 버튼을 사용하여 수동으로 되돌릴 수 없습니다. 그냥 매니페스트 편집 :

<activity android:name=".SplashActivity" android:excludeFromRecents="true" /> 

편집을

당신은 항상 여러 활동을 제거하고 하나 개의 활동이 있도록 최근 사용에, 조각에 항상 표시 전환,하지만 여전히 할 수 있습니다 얻을 수있는 즉, . 다시 스택

+0

전 공개를 제공하기 위해 내 게시물을 편집했습니다. 활동을 시작할 때 이미지의 경로를 지나가고 있다는 것입니다.이 이미지는 지정한 두 지점 중 하나에서 삭제 될 수 있습니다. 이미지가 있고 나중에 이미지가 존재하지 않는다는 사실을 알게 된 것이 사용자에게는 불공평합니다. – vamsiampolu

+0

'moveTaskToBack (true) '와 함께'FLAG_ACTIVITY_CLEAR_TASK' 대신에'android : excludeFromRecents'를 사용하여 발견했습니다. 내 애플 리케이션이 최근 애플 리케이션 서랍에 나타나지 않는다는 것을 알았습니다. Quora 앱은 사라지는 유사한 문제가 있다고 생각합니다. 최근 앱에서 삭제 한 후 나중에 다시 나타납니다. – vamsiampolu

+0

조각으로 전환하십시오. 편집 된 답변 –

0

가 매니페스트에 SplashActivity에이 코드를 추가 있는지 SplashFragment :

<activity 
android:name=".SplashActivity" 
android:noHistory="true" > 

그 후, 당신은 (i.addFlags의 의도를 잊을 수있다.FLAG_ACTIVITY_CLEAR_TASK); 코드에 : 응용 프로그램을 종료하려면

Intent intent = new Intent (SplashActivity.this, MainActivity.class); 
startActivity(intent); 
SplashActivity.finish(); 
관련 문제