webentwicklung-frage-antwort-db.com.de

Android, das onBackPressed () überschreibt

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

46
Jilberta

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

124
codeMagic

Ü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.

35
Erastus

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.

4

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. 

2
Pavlos

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();
}
1
Jay Patel

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.

0
dor00012

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();
}
0
Tabish khan

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.

0
Homa