2017-05-16 3 views
0

Als ich in der ActionBar einer Android-Aktivität bereitzustellen Up Navigation möchte, schreibe ich nur diese Zeilen Code im AndroidManifest.xml:Ist es wirklich notwendig, Java-Code zu schreiben, um die Up Navigation Button in Android anzuzeigen?

<activity android:name=".SettingsActivity" 
    android:parentActivityName=".MainActivity"> 
    <meta-data 
     android:name="android.support.PARENT_ACTIVITY" 
     android:value=".MainActivity"/> 
</activity> 

aber jetzt habe ich gerade gesehen, diese Zeilen Code in Die Java-Datei:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_settings); 

    ActionBar actionBar = this.getSupportActionBar(); 

    if (actionBar != null) { 
     actionBar.setDisplayHomeAsUpEnabled(true); 
    } 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    int itemId = item.getItemId(); 
    switch (itemId) { 
     case android.R.id.home: 
      NavUtils.navigateUpFromSameTask(this); 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

Alle meine früheren Projekte funktionierten nur ohne diese Zeilen von Java. Sind sie wirklich notwendig? Wenn ja, sind sie für die Kompatibilität für Android-Versionen notwendig? In diesem Fall, vor welcher Version?

Antwort

0

Sie sollten Appcompat verwenden, die eine Kompatibilitätsbibliothek ist, um auf verschiedene ui-Elemente zuzugreifen, die als Ansichten auf api 7 < = bekannt sind. Wenn Sie "onOptionsAtemSelected" überschreiben, fügen Sie eine benutzerdefinierte Aktion zu einer Schaltfläche auf der Aktionsleiste hinzu (so ist jetzt die Implementierung von NavUtils.navigateUpFromSameTask (this)). Lassen Sie Ihre Aktivität also AppCompatActivity erweitern (falls noch nicht geschehen).

+0

müssen Sie nicht noch 'setDisplayHomeAsUpEnabled (true)' 'mit AppCompatActivity aufrufen, um den Pfeil anzuzeigen? – lelloman

+0

Also, wenn ich nicht mit API 7 oder weniger arbeite und ich brauche kein anderes Verhalten als das Standardverhalten, muss ich keinen Java-Code schreiben, oder? –

+0

Ja beide von Ihnen, es sei denn, Sie benötigen einige spezifische Funktionen, die nicht in älteren SDK-Ebene vorhanden sind (Android-Studio sollte Sie warnen, falls). – Picci

Verwandte Themen