2016-05-31 75 views
1

我具有限定我的工具欄的XML代碼的以下部分:如何讓「後退箭頭」在工具欄中工作?

<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 

並在SettingsActivity代碼(來自AppCompatActivity導出)如下:

@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"); 

當編譯和運行代碼中,我看到一個工具欄,如下所示:

enter image description here

b點擊左箭頭不會讓我回到上一個菜單。我在這裏錯過了什麼?

回答

2

您可以通過android.R.id.home訪問小箭頭:

@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(); 
} 

如果你試試這個代碼,當你點擊箭頭,它會像按下你的後退按鈕。

+0

似乎工作,謝謝!但是,android.R.id.home定義在哪裏? – Alex

+0

這是Android的默認ID來訪問R文件夾中的按鈕。你沒有定義它。您也可以像訪問顏色一樣訪問默認動畫,例如android.R.anim或android.R.color –

1

onOptionsItemSelected你要聽的點擊,然後做一些事情

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

由於您需要升級一級,請在您的AndroidManifest.xml中進行以下更改。

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

onCreate()添加toolbar.setHomeButtonEnabled(true);

<meta-data>是支持早期版本的API(<API level 16)。

相關問題