2014-07-21 2 views
-6

Мне нужна функциональность для выхода из полного приложения при нажатии кнопки возврата. В настоящее время у меня есть сценарий, который просит дважды нажать для выхода из приложения,Выход из приложения при нажатии назад с подтверждением

в том, что он завершает текущую деятельность, но не выходит из приложения. Старые действия посетителя остаются такими же. вот мой код, который я использую.

int i = 1; 
@Override 
public void onBackPressed() {  
    if (i == 1) { 
     Toast.makeText(getApplicationContext(), "Press back once more to exit.", Toast.LENGTH_SHORT).show(); 
    } else if(i>1) { 
     finish(); 
    } 
    i++; 
} 
+3

Возможный дубликат [Android - Подтвердить выход приложения с помощью тоста] (http://stackoverflow.com/questions/14006461/android-confirm-app-exit-with-toast) – 0101100101

+0

Насколько мне известно, вы можете очистить стек вашего приложения только не другие. Только менеджер задач ОС Android может иметь доступ к этому. – VVB

+0

@deepak Sharma у вас в вашем приложении используется флаг FLAG_ACTIVITY_REORDER_TO_FRONT. –

ответ

-2

Вернитесь к работе только при втором нажатии и сообщите пользователю, чтобы снова нажать, чтобы выйти.

private static long back_pressed; 

@Override 
public void onBackPressed() 
{ 
     /** If you want to take confirmation then display Alert here...**/ 
     if (back_pressed + 2000 > System.currentTimeMillis()) 
      finish(); /** otherwise directly exit from here...**/ 
     else 
      Toast.makeText(getBaseContext(), "Press once again to exit!", Toast.LENGTH_SHORT).show(); 

     back_pressed = System.currentTimeMillis(); 
} 

Реф. Android Snippet

+0

хороший ответ, какая логика. –

+0

Это не отвечает на вопрос. – 323go

+0

@ 323go Что такое проблема с ответом? –

0

, пожалуйста, попробуйте под кодом.

шаг 1: Создание на Constant класса

public class Constant 
{ 
    public static int ACT_COUNT=0; 
} 

шаг 2: Создать BaseActivity класс

public class BaseActivity extends Activity 
{ 
private static long back_pressed; 
    @Override 
    protected void onCreate(Bundle arg0) 
    { 
    super.onCreate(arg0); 
    Constant.ACT_COUNT++; 
    } 


    @Override 
    public void onBackPressed() 
    { 
    /** If you want to take confirmation then display Alert here...**/ 
     if(Constant.ACT_COUNT<=1) 
     { 
      if (back_pressed + 2000 > System.currentTimeMillis()) 
       finish(); /** otherwise directly exit from here...**/ 
      else 
       Toast.makeText(getBaseContext(), "Press once again to exit!", Toast.LENGTH_SHORT).show(); 

      back_pressed = System.currentTimeMillis(); 
     } 
     else 
      super.onBackPressed(); 
    } 

    @Override 
    protected void onDestroy() 
    { 
     super.onDestroy(); 
     Constant.ACT_COUNT--; 
    } 

} 

ПРИМЕЧАНИЕ: Вы должны использовать BaseActivity вместо активности в вашем приложении, кроме активности входа и регистрации, если она находится в вашем приложении.