2016-04-01 8 views
0

Ich habe Benachrichtigungen in meiner App, die einem Benutzer beim Klicken auf eine Nachrichtenaktivität erlauben. Gegenwärtig schließt sie beim Drücken der Zurück-Navigation einfach die App und die Aktivität.Zurückgehen der Navigation nach Benachrichtigungszugriff zulassen

Wie kann ich es konfigurieren, so dass nach dem Zurück-Taste, öffnet es die Hauptaktivität (hat Schubladen-Navigation) sowie das Öffnen der spezifischen Freund Nachricht Liste Fragment? (und anschließend weitere Navigation innerhalb der App erlauben)

+0

Werfen Sie einen Blick auf diesen Link http://StackOverflow.com/A/24680199/3378714. Dies ist hier bereits beantwortet. – Sushant

Antwort

0

Die Art, wie ich das in meiner App behandle, ist das Überschreiben der onKeyDown() Methode. Sie können auch onBackPressed() überschreiben, aber das hat mir Probleme in der Vergangenheit gegeben, also mache ich es so.

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if(keyCode == KeyEvent.KEYCODE_BACK) { 
     //do any cleanup you need to do 
     Intent upIntent = new Intent(this, MainActivity.class); 
     startActivity(upIntent); 
     return true; 
    } else { 
     return false; 
    } 
} 

zur Navigation in einer Aktivität Griff nach oben, die von mehreren anderen Aktivitäten gestartet werden kann, gebe ich in der Regel in einem String, der die „Signatur“ der Aktivität darstellt, die die aktuelle Aktivität, speichern Sie es gestartet wird, dann überprüfen um später herauszufinden, wohin der Navigationstasten navigieren soll. Dann überprüfe ich in meiner onOptionsItemSelected() Methode, welche Aktivität diese Aktivität gestartet hat, indem ich die gespeicherte Zeichenfolge "call signature" verwende und zurück gehe. So ...

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 
    switch(id) { 
     case android.R.id.home: 
      Intent upIntent = null; 
      switch(callingActivitySignature) { 
       case MainActivity.CALL_SIGNATURE: 
        upIntent = new Intent(this, MainActivity.class); 
        break; 
       case SecondActivity.CALL_SIGNATURE: 
        upIntent = new Intent(this, SecondActivity.class); 
        break; 
       case ThirdActivity.CALL_SIGNATURE: 
        upIntent = new Intent(this, ThirdActivity.class); 
        break; 
      } 

      if(upIntent != null) { 
       startActivity(upIntent); 
      } 
      return true; 
    } 
    return false; 
} 
Verwandte Themen