2015-05-26 1 views
0

Я пытаюсь выйти из моего приложения, когда пользователь дважды заборниках HardWare Кнопка назад, я использовал следующий код в моем приложении:Мое приложение не выходя, когда я дважды нажмите кнопку Назад Оборудование

if (doubleBackToExitPressedOnce) { 
     super.onBackPressed(); 
     Dashboard_Activity.this.finish(); 
     return; 
    } 

    this.doubleBackToExitPressedOnce = true; 
    Toast.makeText(this, "Please click BACK again to exit", 
      Toast.LENGTH_SHORT).show(); 

    new Handler().postDelayed(new Runnable() { 

     @Override 
     public void run() { 
      doubleBackToExitPressedOnce = false; 
     } 
    }, 2000); 

Здесь, когда пользователь Двойное отключение аппаратной кнопки назад, это же действие появляется снова и снова, но приложение не выходит. Не могли бы вы помочь мне решить проблему.

+0

Здравствуйте, пытались ли вы, чтобы добавить это вашей деятельности? Dashboard_Activity.addFlags (Intent.FLAG_ACTIVITY_CLEAR_TOP); –

+0

2 вопроса: во-первых, почему вы положили этот super.onBackPressed(); , проверьте экземпляр действия, если активность имеет несколько экземпляров или нет. – vincent091

+0

- это любая другая деятельность до этой Dashboard_Activity? –

ответ

0

Попробуйте следующее:

private static long back_pressed; 

    @Override 
    public void onBackPressed() 
    { 
     if (back_pressed + 2000 > System.currentTimeMillis()) super.onBackPressed(); 
     else Toast.makeText(getBaseContext(), "Press once again to exit!", Toast.LENGTH_SHORT).show(); 
     back_pressed = System.currentTimeMillis(); 
    } 

Source

0

Попробуйте этот метод Любой, где в коде Out сторона OnCreate, Работа для меня

 @Override 
     public void onBackPressed() 
     { 
      try 
      { 

      //pop up Window closed. 
      if (doubleBackToExitPressedOnce) 
      { 
       super.onBackPressed(); 
       return; 
      } 

      this.doubleBackToExitPressedOnce = true; 
      Toast.makeText(this, "Please click BACK again to exit", Toast.LENGTH_SHORT).show(); 

      new Handler().postDelayed(new Runnable() 
      { 

       @Override 
       public void run() 
       { 
        doubleBackToExitPressedOnce=false;      
       } 
      }, 2000); 

      } 
      catch(Exception ex) 
      { 
       ex.printStackTrace(); 
      } 
     } 
0

Во-первых, создать SplashScreenActivity:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    finish(); 
} 

Тогда в вашей деятельности (или в BaseActivity) добавить эту переменную в качестве члена класса:

private long milis; 

И переопределить onBackPressed():

@Override 
public void onBackPressed() { 
    if(milis + 2000 > System.currentTimeMillis()){ 
     Intent intent = new Intent(this, SplashScreenActivity.class); 
     intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
     startActivity(intent); 
    }else{ 
     milis = System.currentTimeMillis(); 
    } 
} 
Смежные вопросы