5

Mam problem z nawigacją po działaniach i nie mogę określić, co robię źle.Powrót i udostępnianie mają różne wyniki.

mam MainActivity i SettingsActivity ale stosując (bar na działania) Back i Up mieć dwa różne wyniki z ustawień działania.

Na przykład, jeśli nacisnę przycisk Back otrzymuję następujące wywołania zwrotne cyklu życia wewnątrz MainActivity:

V/lifeCycle: onOptionsItemSelected 
V/lifeCycle: onPause 
V/lifeCycle: onSaveInstanceState-Bundle[..] 
V/lifeCycle: onStop 
<< PRESS BACK BUTTON >> 
V/lifeCycle: onRestart 
V/lifeCycle: onStart 
V/lifeCycle: onResume 
V/lifeCycle: onPostResume 

Chociaż gdybym naciśnij przycisk Nawiguj w górę i uzyskać te wyniki:

V/lifeCycle: onOptionsItemSelected 
V/lifeCycle: onPause 
V/lifeCycle: onSaveInstanceState-Bundle[..] 
V/lifeCycle: onStop 
<< PRESS NAV UP >> 
V/lifeCycle: onDestroy // Problem 
V/lifeCycle: onCreate // Seems 
V/lifeCycle: onStart // Here 
V/lifeCycle: onResume 
V/lifeCycle: onPostResume 

The Problem polega na tym, że po naciśnięciu klawisza Nav UP moja główna aktywność zostaje zniszczona i odtworzona, co oznacza, że ​​tracę wszystkie moje stany przeglądania, ale naciśnięcie przycisku wstecz nie powoduje tego.

Nie jestem pewien, czy jest to w jaki sposób mam rozpoczęciem PreferenceActivity:

Intent intent = new Intent(this, SettingsActivity.class); 
      startActivity(intent); 
      return true; 

Albo jak moje intencje w AndroidManifest.xml są skonfigurowane:

<activity 
    android:name=".MainActivity" 
    android:label="@string/app_name"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 
<activity 
    android:name=".SettingsActivity" 
    android:label="@string/title_activity_settings" 
    android:parentActivityName=".MainActivity"> 
    <intent-filter> 
     <category android:name="android.intent.category.PREFERENCE" /> 
    </intent-filter> 
</activity> 

To może być przyczyną problemu, lub czy to jest prawidłowe zachowanie, które muszę zastąpić, a jeśli tak, to jaki jest "właściwy" sposób na przesłonięcie?

+0

Via G + I była skierowana na 'NavUtils' i [Zapewnienie Up Nawigacja] (http://developer.android.com/training/implementing- navigation/ancestral.html), To było bardzo pomocne w moim zrozumieniu. – hoss

Odpowiedz

10

Usuń

android: parentActivityName = "główną działalność"

z pliku manifestu dla SettingsActivity.

Edytuj: Powyżej kroku już nie trzeba.

W swojej klasie SettingsActivity, wykonaj następujące czynności:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) 
    { 
     case android.R.id.home: 
      this.finish(); 
      return (true); 
    } 
    return super.onOptionsItemSelected(item); 
} 
+2

Awesome, 'android.R.id.home' był samorodkiem, którego brakowało mi do wyszukania. Jednak opuściłem 'android: parentActivityName =". MainActivity "' w, ponieważ usunięcie go usunęło razem przycisk paska akcji. ale teraz Back and UP robią to samo. – hoss