Kann onBackPressed () nur für eine Aktivität überschrieben werden?
Klicken Sie auf die Schaltfläche "Zurück", um einen Dialog für eine bestimmte Aktivität aufzurufen. Bei allen anderen Aktivitäten möchte ich, dass sie so funktioniert, wie sie zuvor ausgeführt wurde (zu vorherigen Aktivitäten). . .
Vielen Dank für Ihre Antworten im Voraus.
BEARBEITET
Vielen Dank an alle für Ihre Antworten. Ich hatte bereits alles, wie Sie es mir gesagt hatten, aber mein Problem war, dass ich zu meiner vorherigen Aktivität (der, bei der ich wieder den Button Overriden hatte) auf die Schaltfläche "Zurück" geklickt habe Ich dachte, dass es nicht funktionierte, ich dachte, es würde onBackPressed () in der gesamten Anwendung überschreiben, jetzt habe ich es bekommen: D
Ja. Überschreiben Sie es nur in dieser Activity
mit
@Override
public void onBackPressed()
{
// code here to show dialog
super.onBackPressed(); // optional depending on your needs
}
diesen Code nicht in eine andere Activity
einfügen
Überschreiben Sie die onBackPressed()
-Methode wie im Beispiel von codeMagic, und entfernen Sie den Aufruf von super.onBackPressed();
, wenn Sie nicht möchten, dass die Standardaktion (Beenden der aktuellen Aktivität) ausgeführt wird.
Sie können einfach onBackPressed () aufrufen, und wenn Sie nach dem Zurück-Button etwas Aktivität anzeigen möchten, erwähnen Sie das
Intent intent = new Intent(ResetPinActivity.this, MenuActivity.class);
startActivity(intent);
finish();
das hat für mich funktioniert.
Rufen Sie einfach die onBackPressed()
-Methode in der Aktivität auf, in der Sie den Dialog anzeigen möchten, und zeigen Sie darin den Dialog.
Verwenden Sie einfach den folgenden Code, um ein Feld zu initialisieren
private int count = 0;
@Override
public void onBackPressed() {
count++;
if (count >=1) {
/* If count is greater than 1 ,you can either move to the next
activity or just quit. */
Intent intent = new Intent(ResetActivity.this, LoginActivity.class);
startActivity(intent);
finish();
overridePendingTransition
(R.anim.Push_left_in, R.anim.Push_left_out);
/* Quitting */
finishAffinity();
} else {
Toast.makeText(this, "Press back again to Leave!", Toast.LENGTH_SHORT).show();
// resetting the counter in 2s
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
count = 0;
}
}, 2000);
}
super.onBackPressed();
}
Die beste und gebräuchlichste Art, die Musik zu steuern, besteht darin, eine Mutteraktivität zu erstellen, in der Sie startActivity(Intent intent)
überschreiben - darin legen Sie shouldPlay=true
, Und onBackPressed()
fest -, indem Sie shouldPlay = true
.onStop
- darin eine Bedingung einfügen mediaPlayer.stop mit shouldPlay als Bedingung
Dann erweitern Sie einfach die Mutteraktivität auf alle anderen Aktivitäten, und es ist kein Code-Duplizieren erforderlich.
Versuchen Sie, dies funktioniert
@Override
public void onBackPressed(){
super.onBackPressed();
Intent i=new Intent(Intent.ACTION_MAIN);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
finish();
}
Zuerst müssen Sie berücksichtigen, dass Ihre Aktivität, die ich A genannt habe, eine andere Aktivität (B) und in beiden Bereichen ausdehnt
wenn Sie die onbackpressed-Funktion verwenden möchten, wird jeder Code, den Sie in B haben, auch in A ausgeführt. Wenn Sie diese also trennen möchten, sollten Sie sie trennen. Das bedeutet, dass A nicht B erweitern soll, dann können Sie für jedes von ihnen einen separaten Backpressing durchführen.