Android onBackPressed() wird nicht aufgerufen?
in meiner MainActivity, die sich von AppCompatActivity, ich will onBackPressed überschreiben Sie die Methode so auf:
@Override
public void onBackPressed() {
Log.d("MainActivity","onBackPressed");
Toast.makeText(getApplicationContext(),"onBackPressed",Toast.LENGTH_SHORT).show();
}
aber onBackPressed nicht genannt. Wie auch immer, wenn ich nicht onBackPressed überschreiben, schließt sich die Anwendung, wenn ich drücken Sie die Schaltflächen "backbutton" und wenn ich das mache überschreibt es nicht.
Den rest meiner Aktivität sieht wie folgt aus:
public class MainActivity extends AppCompatActivity {
private Toolbar toolbar;
private Drawer drawer;
private FloatingActionButton fab_test;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
fab_test = (FloatingActionButton) findViewById(R.id.fab_test);
fab_test.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getApplicationContext(),"FAB Test pressed",Toast.LENGTH_SHORT).show();
}
});
buildDrawer();
getSupportFragmentManager().beginTransaction().add(R.id.fragmentContainer,page).commit();
}
@Override
public void onBackPressed() {
Log.d("MainActivity","onBackPressed");
Toast.makeText(getApplicationContext(),"onBackPressed",Toast.LENGTH_SHORT).show();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main_menu, menu);
return true;
}
}
EDIT: ich Rede von der hardware-backbutton(nicht die actionbar)
verwenden onKeyDown-Methode, um overrride-zurück-Aktion
...können Sie einfach diesen code innerhalb
Sie haben überschrieben
Ihre onBackPressed () - Methode ist gut. Problem gibt ' s nicht
Die Log-und Toast, beides hat nicht funktioniert, aber ich jetzt eingeschaltet, um die onKeyDown-Methode und es funktioniert.
...können Sie einfach diesen code innerhalb
onBackPressed()
, keine Notwendigkeit für onKeyDown
. Aus den docs: Called when the activity has detected the user's press of the back key. The default implementation simply finishes the current activity, but you can override this to do whatever you want.
Es muss ein anderes problem für dieses Verhalten.Sie haben überschrieben
onKeyDown
für die zurück-Taste? Denn wenn Sie dies getan haben, überall in Ihrem code, Sie möglicherweise nicht true zurückgegeben und onBackPressed
ist nicht genannt....Ihre onBackPressed () - Methode ist gut. Problem gibt ' s nicht
Die Log-und Toast, beides hat nicht funktioniert, aber ich jetzt eingeschaltet, um die onKeyDown-Methode und es funktioniert.
InformationsquelleAutor Steve2955 | 2016-09-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese Frage bereits beantwortet, aber ich fühle mich, klar, etwas hier in diesem Thema. Die meisten Kommentare und Antworten darauf hin, verwenden
super.onBackPressed()
und dass dies die Ursache für das nicht funktionierende MethodeonBackPressed()
. Aber das ist nicht richtig und wichtig, damit andere Anfänger kennen. Die MethodeonBackPressed()
muss nicht verwendensuper.onBackPressed()
.onBackPressed()
funktioniert auch, wenn jemand, zum Beispiel, Kommentarsuper.onBackPressed()
aus.Als questionier geschrieben hat, möchte er nicht verwenden
super.onBackPressed()
weil es in der Nähe der Aktivität. So ist die Ursache dafür, warum es nicht funktioniert, könnte sein, aufgeteilt in drei mögliche Ursachen:In der Regel, die toast-Werke durch die übergabe des richtigen Kontext. Im Fall des fragenden, einfach vorbei
this
.Für das Protokoll einfach den richtigen filter auf logcat.
I dont care, wenn jemand geben downvotes jetzt, aber es muss klar sein, für andere Anfänger, dass
super.onBackPressed()
dürfen nicht verwendet werden.Sowieso, die Verwendung von
onKeyDown()
ist auch eine Lösung.InformationsquelleAutor Opiatefuchs
Den
onBackPressed()
ist eine Standard-Aktion aufgerufenonKeyDown()
im API < 5 und eine Standard-Aktion aufgerufenonKeyUp()
ab API-level 5 und level up. WennonKeyUp()
nicht nennensuper.onKeyUp()
,onBackPressed()
werden nicht genannt.Dokumentation onKeyDown()
Dokumentation onKeyUp().
Auch ein weiterer Grund, dass
onBackPressed()
kann nicht aufgerufen werden, weil Sie mit der soft-Taste zurück auf die actionbar, dass es bei der folgenden benötigt:InformationsquelleAutor BitByteDog
Ihnen fehlt, super.onBackPressed();
oder verwenden Sie
Dank
super.onBackPressed(); hat nichts, aber für einige Grund, onKeyDown für mich gearbeitet.
für Sie sicher,
onKeyDown
funktioniert, versuchen Sie einfach meine Lösung in den Kommentar, die bei Weitergabe den richtigen Kontext....die onBackPressed sollte funktionieren...ja onKeyDown funktioniert,
InformationsquelleAutor Saveen
Entfernen Sie einfach super.onBackPressed() funktioniert es
InformationsquelleAutor vijay
stellen Sie sicher, dass Sie nicht ruft onkeydown in Ihrem super Ausblick, wie es mit der zurück-Schaltfläche durch klicken auf den ersten.
InformationsquelleAutor Ahmed Esameddeen