2017-04-24 3 views
0

J'ai essayé de passer outre la onkeydown() méthode avec le onBackPressed() méthode mais la boîte de dialogue d'alerte ne semble pas à la place il va juste revenir à la précédente intent.I essayé plusieurs exemples mais aucun d'entre eux a travaillé.OnBackPressed n'affiche pas alerte

@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
      if (keyCode == KeyEvent.KEYCODE_BACK) { 
     onBackPressed(); 

     } 

     return super.onKeyDown(keyCode, event); 
    } 

     @Override 
     public void onBackPressed() { 


     Log.d("confirm save method",""); 
     AlertDialog.Builder builder = new AlertDialog.Builder(this); 

      builder.setTitle(""); 
      builder.setMessage("Do you want to Save the Game ?"); 
      builder.setCancelable(false); 
       builder.setPositiveButton("YES", 
       new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int which) { 
        finish(); 
        System.exit(0); 
       } 
      }); 

    builder.setNegativeButton("NO", 
      new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
        dialog.cancel(); 
       } 
      }); 

       AlertDialog alert = builder.create(); 
       alert.show(); 


      Log.d("confirm save method",""); 

}

Répondre

0
@Override 
public void onBackPressed() { 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setMessage("Are you sure you want to exit?") 
      .setTitle("Exit Alert") 
      .setCancelable(false) 
      .setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 

        //finishAffinity(); 
        finish(); //or do anything 
       } 
      }) 
      .setNegativeButton("No", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        dialog.cancel(); 
       } 
      }); 
    AlertDialog alert = builder.create(); 
    alert.show(); 
} 

essayer ce code, et également supprimer votre onKeyDown();

1
  • Astuce1: si vous remplacez onBackPressed, vous ne devez pas passer outre onKeyDown(int keyCode, KeyEvent event). C'est compliqué. supprimer cette méthode (onKeyDown) peut résoudre ce problème.
  • Astuce 2: return true pour interrompre cet événement clé.

    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
         if (keyCode == KeyEvent.KEYCODE_BACK) { 
         alertAialog(); 
         return true; 
         } 
    
        return super.onKeyDown(keyCode, event); 
    } 
    private void alertDialog(){ 
    ... 
    }