2015-08-02 2 views
0

Я новый разработчик Android, мое приложение закрывается, когда я нажимаю обратно с любой страницы в меню. Я добавил этот код диалог, но он не работаетonbackpressed закрыть мое приложение без подтверждения

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 

    FragmentManager fm = getSupportFragmentManager(); 
    int count = fm.getBackStackEntryCount(); 

    if(count == 0) { 
     // Do you want to close app? 
    } 

}

ответ

1

Вы пробовали поставить super вызов в блоке еще так только называется, если ключ не KEYCODE_BACK?

/* Prevent app from being killed on back */ 
    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 

     // Back? 
     if (keyCode == KeyEvent.KEYCODE_BACK) { 
      // Back 
      moveTaskToBack(true); 
      return true; 
     } 
     else { 
      // Return 
      return super.onKeyDown(keyCode, event); 
     } 
    } 

Это должно работать до сих пор! Не стесняйтесь комментировать, если у вас есть проблемы.

+0

Я попробовал ваш код, и он покажет мне эту ошибку «KeyEvent не может быть разрешен для типа» –

+0

@josepheshak Вам нужно импортировать KeyEvent – user3648217

0

попробовать это:

@Override 
public void onBackPressed() { 
    FragmentManager fm = getSupportFragmentManager(); 
    int count = fm.getBackStackEntryCount(); 
    if(count == 0) { 
     // Do you want to close app? 
     showDialog(); 
    } 
} 

public void showDialog() { 
    AlertDialog.Builder alert = new AlertDialog.Builder(this); 
    alert.setTitle("Do you want to close the app"); 
    alert.setPositiveButton("Confirm", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int whichButton) { 
       finish(); //or super.onBackPressed(); 
     } 
    }); 
    alert.setNegativeButton("Dismiss", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int whichButton) { 
     } 
    }); 
    alert.show(); 
} 
+0

это вам помогло? .. –

0

Override на данный вид деятельности onBackPressed следующим в случае, если есть, например, сделаны изменения некоторых значений и забыл обновить те потом, но вместо нажатия на кнопку назад:

@Override 
    public void onBackPressed() { 
    if(<condition>) { 
     AlertDialog.Builder ad = new AlertDialog.Builder(this); 
     ad.setTitle("Changes were made. Do you want to exit without update?"); 
     ad.setPositiveButton(
       "OK", 
       new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        backPress(); 
       } 
       } 
    ); 
     ad.setNegativeButton(
       "Update the changes", 
       new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        <Update the changes>; 
        Toast.makeText(getApplicationContext(), "Changes were updated", Toast.LENGTH_SHORT).show(); 
        backPress(); 
       } 
       } 
    ); 
     ad.setCancelable(false); 
     ad.show(); 
    } else { 
     backPress(); 
    } 
    } 

    private void backPress() { 
    super.onBackPressed(); 
    } 
Смежные вопросы