如何在工具栏中使“后退箭头”工作?

时间:2016-05-31 18:28:20

标签: android

我有以下部分定义我的工具栏的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

但点击左箭头不会让我回到上一个菜单。我在这里缺少什么?

3 个答案:

答案 0 :(得分: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();
}

如果您尝试使用此代码,当您单击箭头时,它会像按下后退按钮一样。

答案 1 :(得分:1)

onOptionsItemSelected中你需要听取点击然后做点什么

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

答案 2 :(得分: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)。

相关问题