2016-05-31 50 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)。

相关问题