2013-08-24

Android. Реализация выхода. Метод onBackPressed().

Не модно и не интересно делать кнопку "Выход" в приложении, сейчас все вешают выход на нажатие кнопки Назад, то есть на метод onBackPressed(). Есть два способа сделать красивый выход...



Вообще в Android нет термина выход или закрытие приложения, есть только Принудительное закрытие, точнее говоря убить приложение, а это выглядит некрасиво

Приходится обходиться методом finish() только закрыть активити или же просто свернуть приложение.

1. Выход с AlertDialog      

           Код:
@Override
   public void onBackPressed() {
    AlertDialog.Builder alertDialog = new AlertDialog.Builder(MainActivity.this);
      alertDialog.setTitle("Выйти?");
     
      alertDialog.setMessage("Вы действительно хотите выйти?");
  
      alertDialog.setPositiveButton("Да", new DialogInterface.OnClickListener() {
          public void onClick(DialogInterface dialog,int which) {
           Intent intent = new Intent(Intent.ACTION_MAIN);
              intent.addCategory(Intent.CATEGORY_HOME);
              intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
              startActivity(intent);
          }
      });
  
      alertDialog.setNegativeButton("Нет", new DialogInterface.OnClickListener() {
          public void onClick(DialogInterface dialog, int which) {
              dialog.cancel();
          }
      });

      alertDialog.show();
  return;
  
   }
Результат:  

2. Выход с двойным нажатием кнопки Back

           Код такой:
private static long back_pressed;

     .  .  .  .  .  .  .

@Override
public void onBackPressed() { 

   if (back_pressed + 2000 > System.currentTimeMillis())
   super.onBackPressed();

 else

    Toast.makeText(getBaseContext(), "Нажмите еще раз чтобы выйти",
           Toast.LENGTH_SHORT).show();

 back_pressed = System.currentTimeMillis();

 }
Результат кода:
Как вы видите в первом случае выход организован так, что он только сворачивает приложение, вообще то можно было сделать его с методом finish(), но после него будет так: активити с которой вы придете на главный в котором приложение будет закрываться, при след открытии откроется не главная, а та с которой вы пришли, а это неудобно пользователю, вот так как-то...

Комментариев нет:

Отправить комментарий