2016-08-19 1 views
0

Ich habe drei Aktivität A, B und C, wobei C eine Aktivität HOME Bildschirm zu rufen, wieWie man eine bestimmte Aktivität in Android schließt?

finish(); 
Intent intent = new Intent(Intent.ACTION_MAIN); 
intent.addCategory(Intent.CATEGORY_HOME); 
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 

Zuerst folgt, um die Aktivität B durch

Intent B_intent = new Intent(this, B.class); 
B_intent .putExtra("B_Activity", true); 
this.startActivity(B_intent); 

rufen die Aktivität A wird Dann kann ich von A aus auch die C-Aktivität aufrufen (A, indem Sie einen Thread verwenden). Mein Problem ist, wie kann ich die Aktivität B löschen/löschen oder beenden, wenn ich C-Aktivität aufrufen, so dass, wenn ich das B erneut aufrufen, muss es onCreate() -Funktion in B_Activity-Klasse gehen Ich versuche, die Funktion

zu verwenden
if (getIntent().getBooleanExtra("B_Activity", false)) 
{ 
    finish(); 
} 

Vielen Dank

Antwort

0
B.this.finish(); // it will destroys the activity B 

die Aktivität B-Aktivität C über Absicht zerstören wie folgt,

B.this.finish(); 
Intent i = new Intent(B.this,C.class); 
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(i); 

jetzt Bevor ich, wenn Sie die Handlung nennen tivität B von der Aktivität A/C ruft sie Create() der B-Aktivität auf.

+0

Entschuldigung. Ich nenne die Aktivität C von A nicht von B. So. Ich kann nicht verwenden B.this.finish – Jame

+0

erarbeiten Sie Ihren Fluss? Ich bekomme nicht genau das, was du erreichen willst? – Dnyanesh

+0

Ich meine, ich habe drei Aktivitäten: A, B, C. Von A, werde ich B und C anrufen. Wie kann ich die Aktivität B beenden, bevor ich die Aktivität C – Jame

1

Ich habe 3 Lösungen für Sie:

1) Zunächst einmal implementieren Sie einfach die Funktionalität onResume() -Methode von B_Activity, so dass, wenn Sie von C_Activity Rückkehr zum B_Activity wird sie ausgeführt.

2) Ich empfehle Fragments sind, was Sie für solche Szenarien verwenden sollten.

3) Wenn dies Ihr Problem nicht lösen, dann der beste Ansatz für einen solchen Anwendungsfall ist eine statische Factory-Methode wie diese zu machen:

public static void finishActivity(MainActivity mainActivity){ 
     if(mainActivity!=null) 
      mainActivity.finish(); 
    } 

Jetzt anrufen:

MainActivity.finishActivity(mainActivity); 

von überall wo Sie die laufende Instanz der SecondActivity schließen möchten. Sie müssen die Instanz von MainActivity übergeben und Sie können es erhalten, sobald Sie es starten.

Hoffe, das hilft. Happy coding :)

Verwandte Themen