Wie deaktiviere ich die Schaltfläche "Zurück" in Android, während ich die Anwendung abmelde?
Wie deaktiviere ich die Schaltfläche "Zurück" in Android, während ich die Anwendung abmelde?
Antworten:
Überschreiben Sie die onBackPressed-Methode und tun Sie nichts, wenn Sie die Zurück-Taste auf dem Gerät bedienen möchten.
@Override
public void onBackPressed() {
if (shouldAllowBack()) {
super.onBackPressed();
} else {
doSomething();
}
}
Wenn Sie nach einem höheren API-Level 2.0 und höher suchen, funktioniert dies hervorragend
@Override
public void onBackPressed() {
// Do Here what ever you want do on back press;
}
Wenn Sie nach Android API Level bis 1.6 suchen.
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
//preventing default implementation previous to android.os.Build.VERSION_CODES.ECLAIR
return true;
}
return super.onKeyDown(keyCode, event);
}
Schreiben Sie den obigen Code in Ihre Aktivität, um zu verhindern, dass die Zurück-Taste gedrückt wird
Sie können dies auf einfache Weise tun. Rufen Sie nicht super.onBackPressed () auf.
@Override
public void onBackPressed() {
// super.onBackPressed();
// Not calling **super**, disables back button in current screen.
}
Überschreiben Sie einfach die onBackPressed () -Methode.
@Override
public void onBackPressed() { }
Ich benutze es.............
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode==KeyEvent.KEYCODE_BACK)
Toast.makeText(getApplicationContext(), "back press",
Toast.LENGTH_LONG).show();
return false;
// Disable back button..............
}
Wenn Sie sicherstellen möchten, dass Ihre Android-Client-Anwendung von einem Server abgemeldet ist, bevor Ihre Aktivität beendet wird -> melden Sie sich mit einem Dienst in einem eigenen Thread ab (das sollten Sie sowieso tun).
Durch Deaktivieren der Zurück-Taste wird nichts für Sie gelöst. Sie haben immer noch das gleiche Problem, wenn der Benutzer beispielsweise einen Anruf erhält. Wenn ein Anruf eingeht, besteht für Ihre Aktivität ungefähr die gleiche Wahrscheinlichkeit, dass sie getötet wird, bevor sie eine zuverlässige Antwort vom Netzwerk erhält.
Aus diesem Grund sollten Sie einen Dienst in einem eigenen Thread auf die Antwort aus dem Netzwerk warten lassen und ihn dann erneut versuchen lassen, wenn dies nicht erfolgreich ist. Es ist nicht nur viel weniger wahrscheinlich, dass der Android-Dienst getötet wird, bevor er eine Antwort erhält, sondern sollte er vor Beendigung des Auftrags wirklich getötet werden, kann er von AlarmManager jederzeit wiederbelebt werden, um es erneut zu versuchen.
Überschreiben Sie einfach die onBackPressed () -Methode und Sie müssen nicht die Superklasse der onBackPressed-Methode oder andere aufrufen.
@Override
public void onBackPressed()
{
}
Oder übergeben Sie Ihre aktuelle Aktivität an die onBackPressed () -Methode.
@Override
public void onBackPressed()
{
startActivity(new Intent(this, myActivity.class));
finish();
}
Ersetzen Sie den gewünschten Aktivitätsnamen durch myActivity.
Wenn Sie ein Fragment verwenden, rufen Sie zunächst die Methode callParentMethod () auf
public void callParentMethod(){
context.onBackPressed(); // instead of context use getActivity or something related
}
Rufen Sie dann die leere Methode auf
@Override
public void onBackPressed()
{
}
wenn Sie verwenden FragmentActivity
. dann mach das so
Rufen Sie dies zuerst in Ihrem Fragment
.
public void callParentMethod(){
getActivity().onBackPressed();
}
und dann Call- onBackPressed
Methode neben Ihrer übergeordneten FragmentActivity
Klasse.
@Override
public void onBackPressed() {
//super.onBackPressed();
//create a dialog to ask yes no question whether or not the user wants to exit
...
}
Sie können die onBackPressed()
Methode in Ihrer Aktivität überschreiben und den Aufruf der Superklasse entfernen.
@Override
public void onBackPressed() {
//remove call to the super class
//super.onBackPressed();
}
Sie müssen nur die Methode für die Schaltfläche "Zurück" überschreiben. Sie können die Methode leer lassen, wenn Sie möchten, damit beim Drücken der Zurück-Taste nichts passiert. Bitte schauen Sie sich den folgenden Code an:
@Override
public void onBackPressed()
{
// Your Code Here. Leave empty if you want nothing to happen on back press.
}
Abgesehen von diesen beiden Methoden aus der obigen Antwort.
onBackPressed () (API Level 5, Android 2.0)
onKeyDown () (API Level 1, Android 1.0)
Sie können auch dispatchKeyEvent()
(API Level 1, Android 1.0) wie folgt überschreiben :
dispatchKeyEvent()
(API Level 1, Android 1.0)
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
// TODO Auto-generated method stub
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
return true;
}
return super.dispatchKeyEvent(event);
}
Deaktivieren Sie den hinteren Button in Android
@Override
public void onBackPressed() {
return;
}
Für mich hat das Überschreiben onBackPressed()
nicht funktioniert, aber das explizite Angeben, mit welcher Aktivität es beginnen soll, hat gut funktioniert:
@Override
public void onBackPressed(){
Intent intent = new Intent(this, ActivityYouWanToGoBack.class);
startActivity(intent);
}
Versuche dies:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
return true;
}
return super.onKeyDown(keyCode, event);
}