【问题标题】:changing ActionBar icon更改 ActionBar 图标
【发布时间】:2016-12-17 16:01:16
【问题描述】:

我有一个自定义操作栏,我想通过单击它在主活动上添加导航抽屉图标,抽屉将打开/关闭,在其他活动上我想要一个后退箭头,单击它我返回父活动。 我已经为抽屉图标做了这个,它可以工作,

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

但一次只有一件事有效,如何两者都有效?

【问题讨论】:

    标签: android android-actionbar


    【解决方案1】:

    在其他活动中(您想要返回箭头的位置),您应该在AndroidManifest.xml 文件中定义parentActivityName 以定义按下返回箭头时应导航的活动。

    <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>
    

    在这个activity java代码中,你应该在onCreate回调方法中编写如下代码。

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

    并且在该活动onOptionsItemSelected回调方法中,您还需要以下代码才能返回到之前的活动。

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

    【讨论】:

    • 箭头显示但不返回父活动。
    • @MubtadaANaqvi,您必须在 AndroidManifest.xml 文件中为该 Activity 定义 parentActivityName,并在 onOptionsItemSelected 回调方法中定义 onBackPressed()。
    猜你喜欢
    • 2014-08-24
    • 2014-01-26
    • 2015-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多