2016-04-03 2 views
1

Ich versuche, zu einer übergeordneten Aktivität zu navigieren. Wenn die übergeordnete Aktivität an der Spitze des Backstacks liegt, funktioniert sie. Wenn sich die übergeordnete Aktivität nicht auf dem Backstack befindet, wird beim Navigieren mit NavUtils einfach zur vorherigen Aktivität zurückgegangen.Wie navigiere ich zu einer übergeordneten Aktivität, die nicht auf dem Backstack ist?

Minimum Meine App SDK ist 16.

Manifest Schnipsel:

<activity 
     android:name=".activities.ParentActivity" 
     android:label="@string/title_activity_parent" 
     android:theme="@style/AppTheme.NoActionBar" 
     android:launchMode="singleTop"/> 
<activity 
     android:name=".activities.ChildActivity" 
     android:label="@string/title_activity_child" 
     android:parentActivityName=".activities.ParentActivity"> 

-Code-Snippet für ChildActivity:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
      case android.R.id.home: 
       Intent intent = new Intent(); 
       intent.setClass(this, ParentActivity.class); 
       NavUtils.navigateUpTo(this, intent); 
       return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 

ich ein paar verschiedene Möglichkeiten zur Umsetzung der oben Navigation aber keiner versucht haben, habe dieses Problem gelöst. Das Ändern des Startmodus von ParentActivity auf "Standard" funktioniert auch nicht.

Antwort

1

NavUtils.navigateUpTo(Intent) keine übergeordnete Aktivität erstellen, wenn es nicht auf dem Stapel ist. Ihre Mindest-API ist 16, sodass Sie Stack-Navigationsmethoden direkt aufrufen können, ohne Support-Klassen zu verwenden.

In Ihrem Fall sollten Sie onNavigateUp() Methode aufrufen. Wenn Sie die Navigation nach oben anpassen möchten, können Sie auch shouldUpRecreateTask(Intent) und onPrepareNavigateUpTaskStack(TaskStackBuilder) überschreiben. Wenn shouldUpRecreateTask(Intent)true zurückgibt, wird die übergeordnete Aktivität erstellt, wenn sie nicht im Stapel vorhanden ist.

Verwandte Themen