2016-03-29 9 views
0

Ich habe eine Aktivität A, und wenn ich einen Werkzeugleisteneintrag drücke, startet sie Aktivität B mit startActivity (intent). Immer wenn ich die Zurück-Taste oder das Navigationssymbol nach oben drücke, wird meine App geschlossen. Ich glaube, das liegt daran, dass ich launchMode = "singleTop" in meiner übergeordneten Aktivität verwende (ich verwende dies, weil ich eine Suchansicht und eine durchsuchbare Konfiguration habe, weil ich keine weitere Instanz meiner Aktivität für die Suche starten möchte)). Die Frage ist also: Wie kann ich von der Kinderaktivität (B) zur Elternaktivität (A) zurückkehren, indem ich die Navigation nach oben und die Zurück-Taste benutze, ohne meine App zu schließen? Ich habe danach gesucht und etwas über onNewIntent() gefunden. Wenn dies meine Lösung ist, wie sollte ich sie richtig benutzen?Up Navigation und singleTop Startmodus


Hier ist mein Manifest-Datei:

 <activity 
      android:name="com.example.fernando.inspectionrover.MainActivity" 
      android:screenOrientation="landscape"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <action android:name="android.intent.action.SEARCH" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
      <meta-data 
       android:name="android.app.searchable" 
       android:resource="@xml/searchable" /> 
     </activity> 
     <activity 
      android:name="com.example.fernando.inspectionrover.BluetoothSettingsActivity" 
      android:parentActivityName="com.example.fernando.inspectionrover.MainActivity" 
      android:screenOrientation="landscape"> 
      <meta-data 
       android:name="android.support.PARENT_ACTIVITY" 
       android:value="com.example.fernando.inspectionrover.MainActivity" /> 

Hier ist, wie meine neue Tätigkeit beginnen:

switch (id) { 
      case R.id.bluetoothActivity: 
       Intent switchActivity = new Intent(this, BluetoothSettingsActivity.class); 
       startActivity(switchActivity); 
       Log.i(LIFE_CYCLE, "Switching from " + getLocalClassName() + " to Bluetooth Setting Activity"); 
       finish(); 
       break; 
     } 

Antwort

2

Ich stoße vielleicht nur auf die einfachste Antwort, aber ich denke, das Hauptproblem ist, dass Sie beenden nach beenden Sie starten die neue Aktivität, die für die aufrufende Aktivität destroy aufruft und sie aus dem Aktivitätsstapel löscht.

+0

das ist genau das Problem: p –

+0

Ihr upvote gab nur den Ruf, Ihre zu erhöhen.; p –

2

Single Top bedeutet, dass, wenn Sie eine Aktivität starten, die bereits eingeschaltet ist oben, es wird nicht wieder neu erstellt einfach wieder aufgenommen.

Der Grund, warum Ihre Navigation zurück die App schließen, ist, weil Sie finish() aufrufen, gleich nachdem Sie eine neue Aktivität starten. Das bedeutet, dass Sie diese Aktivität nicht mehr benötigen, damit sie vom Stapel entfernt wird. Wenn Sie auf activityB zurückgehen, wird die App geschlossen, weil es nichts gibt, um zurückzugehen (Sie riefen finish() erinnern?