2016-07-11 16 views
1

Eigentlich ist mein Problem, wenn ich die Zurück-Taste drücken, zeigt es eine dialog und gleichzeitig zur gleichen Zeit die Anwendung ohne Operation auf Schlüssel beendet? Kann das jemand lösen?Probleme in onBackpressed()

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 
    AlertDialog.Builder ab = new AlertDialog.Builder(this); 
    ab.setMessage("Really want to exit"); 
    ab.setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      finish(); 
     } 
    }); 
    ab.setNegativeButton("No", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      Main.super.onBackPressed(); 
     } 
    }); 
    ab.create(); 
    ab.show(); 
} 

Antwort

3

entfernen super.onBackPressed(); von Verfahren, halten Sie es in onClick() nur

@Override 
public void onBackPressed() { 
    super.onBackPressed(); //remove it 

} 

scheint, dass Sie in den beiden Tasten gleiche Operation durchführen, Sie Main.super.onBackPressed() von negativeButton

ab.setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     super.onBackPressed(); 
    } 
}); 
ab.setNegativeButton("No", new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     ab.dismiss(); 
    } 
}); 
2

nicht entferne sollte Rufen Sie super Methode von onBackPressed.

@Override 
public void onBackPressed() { 

    AlertDialog.Builder ab = new AlertDialog.Builder(this); 
    ab.setMessage("Really want to exit"); 
    ab.setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      finish(); 
     } 
    }); 
    ab.setNegativeButton("No", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 

     } 
    }); 
    ab.create(); 
    ab.show(); 
} 
+0

wenn ich drücke nicht auch die App geschlossen, wie auf diese Tätigkeit beschränken in tun, wenn ich keine –

+0

drücken @ A.asha meine Antwort aktualisiert überprüfen. entferne dies ** Main.super.onBackPressed(); ** –

0
try this 
    @Override 
    public void onBackPressed() { 

     AlertDialog.Builder ab = new AlertDialog.Builder(this); 
     ab.setMessage("Really want to exit"); 
     ab.setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       finish(); 
      } 
     }); 
     ab.setNegativeButton("No", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       Main.super.onBackPressed(); 
      } 
     }); 
     ab.create(); 
     ab.show(); 
    } 
0

Sie müssen super.onBackPressed(); von onBackPressed() zu entfernen. dann wie Ihre Funktion sollte

@Override 
public void onBackPressed() { 

AlertDialog.Builder ab = new AlertDialog.Builder(this); 
ab.setMessage("Really want to exit"); 
ab.setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     finish(); 
    } 
}); 
ab.setNegativeButton("No", new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     Main.super.onBackPressed(); 
    } 
}); 
ab.create(); 
ab.show(); 
}