更改 ActionBar 图标

changing ActionBar icon

我有一个自定义的操作栏,我想在 Main Activity 上添加导航抽屉图标,点击它抽屉会 open/close 而在其他活动上我想要一个后退箭头,点击它我去回到 parent activity。 我已经为抽屉图标做了这个并且它有效,

toolbar.setNavigationIcon(R.drawable.ic_menu_black_24dp);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
            this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.setDrawerListener(toggle);
    toggle.syncState();

对于后退箭头我已经试过了

setDisplayHomeAsUpEnabled(true);
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            this.finish();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

但一次只能做一件事情,如何才能同时做这件事?

在其他活动中(需要后退箭头的地方),您应该在 AndroidManifest.xml 文件中定义 parentActivityName 以定义按下后退箭头时应导航到哪个 activity。

<activity
        android:name=".activities.ArticleDetailActivity"
        android:parentActivityName=".activities.ArticlesActivity"
        android:screenOrientation="portrait"
        android:theme="@style/AppTheme.NoActionBar">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.example.activities.ArticlesActivity" />
</activity>

在这段activityjava代码中,你应该在onCreate回调方法中编写如下代码。

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

并且在那个activityonOptionsItemSelected回调方法中,你还需要下面的代码来return回到之前的activity.

public boolean onOptionsItemSelected(MenuItem item) {

        int id = item.getItemId();

        switch (id) {
            case android.R.id.home:
                onBackPressed();
                return true;
        }

        return super.onOptionsItemSelected(item);
}