2016-02-01 5 views
2

В настоящее время я работаю над приложением, которое использует большую кнопку обратной связи для Android-устройств. Мне было интересно, как проверить, является ли действие последним, и если пользователь снова нажимает кнопку, он не выходит из приложения, кроме случаев, когда пользователь снова нажимает кнопку, например, с помощью приложения 9gag.Подтвердите приглашение для выхода из приложения

Спасибо!

+1

Дубликат http://stackoverflow.com/questions/2257963/how-to-show-a-dialog-to-confirm-that-the-user-wishes-to-exit-an-android-activity – Rohit5k2

ответ

4

С помощью метода Activity.isTaskRoot() вы можете проверить, не выйдет ли пользователь из приложения при нажатии кнопки «Назад».

Тогда вы просто переопределите onBackPressed(), чтобы обрабатывать его иначе, чем обычно.

6
@Override 
public void onBackPressed() { 
    new AlertDialog.Builder(this) 
     .setIcon(android.R.drawable.ic_dialog_alert) 
     .setTitle("Closing Activity") 
     .setMessage("Are you sure you want to close this activity?") 
     .setPositiveButton("Yes", new DialogInterface.OnClickListener() 
    { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      finish();  
     } 

    }) 
    .setNegativeButton("No", null) 
    .show(); 
} 
2

Вот пример:

private boolean doubleBackToExitPressedOnce; 
@Override 
public void onBackPressed() { 
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    if (drawer.isDrawerOpen(GravityCompat.START)) { 
     drawer.closeDrawer(GravityCompat.START); 
    } 
    if (doubleBackToExitPressedOnce) { 
     super.onBackPressed(); 
    } 

    this.doubleBackToExitPressedOnce = true; 
    Toast.makeText(this, this.getResources().getString(R.string.exit_toast), Toast.LENGTH_SHORT).show(); 

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

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

DrawerLayout блок не является обязательным.

Смежные вопросы