2016-05-31 12 views
1

Ich habe die von den XML-Code folgenden Teil, der meine Symbolleiste definiert:Wie funktioniert der 'Zurück-Pfeil' in der Symbolleiste?

<GridLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:columnCount="5" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:useDefaultMargins="true" 
    android:alignmentMode="alignBounds" 
    android:columnOrderPreserved="false"> 

    <android.support.v7.widget.Toolbar android:id="@+id/toolbar_setting" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="?attr/colorPrimary"/> 

    ... // other code here 

und den Code im SettingsActivity (abgeleitet von AppCompatActivity) ist wie folgt:

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

    // Set toolbar, allow going back. 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_setting); 
    toolbar.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      finish(); 
     } 
    }); 
    setSupportActionBar(toolbar); 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    getSupportActionBar().setTitle("Settings"); 

Beim Kompilieren und die Lauf Code sehe ich eine Symbolleiste wie folgt:

enter image description here

b Ein Klick auf den Pfeil nach links bringt mich nicht zum vorherigen Menü zurück. Was fehlt mir hier?

Antwort

2

Sie diesen kleinen Pfeil von android.R.id.home zugreifen:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case android.R.id.home: 
      onBackPressed(); 
      return true; 
    } 

    return(super.onOptionsItemSelected(item)); 
} 

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 
} 

Wenn Sie diesen Code versuchen, wenn Sie Pfeil klicken, Es verhält sich so, als ob Ihre Zurück-Taste gedrückt wäre.

+0

Scheint zu arbeiten, danke! Aber wo ist 'android.R.id.home' definiert? – Alex

+0

Es ist die Standard-ID von Android, auf diese Schaltfläche im R-Ordner zuzugreifen. Du hast es nicht definiert. Sie können auch auf Standardanimationen und Farben zugreifen, zum Beispiel android.R.anim oder android.R.color –

1

in onOptionsItemSelected benötigen Sie für den Klick hören dann etwas tun

case android.R.id.home: 
    // do something with the click 
    break; 
1

Da Sie eine Ebene höher gehen müssen, nehmen Sie die folgenden Änderungen in Ihrem AndroidManifest.xml.

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

In onCreate() hinzufügen toolbar.setHomeButtonEnabled(true);

Die <meta-data> ist früher API-Versionen (<API level 16) zu unterstützen.

Verwandte Themen