使用导航抽屉导航时,防止多个操作栏标题更改

时间:2014-04-02 15:53:08

标签: android navigation-drawer drawerlayout

根据Android指南,我实现了ActionBarDrawerToggle,切换到全局上下文onDrawerOpened和本地上下文onDrawerClosed。此上下文切换涉及更改操作栏项目以及操作栏标题,并且非常简单。问题是,如果我导航到新屏幕,那么操作栏的标题将更改两次,一次用于切换回本地上下文,另一次用于用户也在导航的新屏幕。这看起来很笨重,我似乎无法找到一种方法来实现标题更改,以便用户不会看到它两次。

1 个答案:

答案 0 :(得分:1)

似乎处理此问题的最佳方法是在抽屉关闭时检查一个条件。

这是一个简短的例子:

private boolean mNoTitleChange;
private int mPosition = -1;

@Override
public void onDrawerClosed(View view) {
    if (mNoTitleChange) {
        startActivity(new Intent(CurrentActivity.this, NewActivity.class));
        mNoTitleChange = false;
        return;
    }
    getActionBar().setTitle(mTitle);
    invalidateOptionsMenu();
}

@Override
protected void onResume() {
    super.onResume();
    if (mPosition != -1) {
        setTitle(mYourTitles[mPosition]);
        mPosition = -1;
    }
}

每当您在DrawerLayout中选择一个项目时,请根据需要调整boolean

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        mNoTitleChange = true;
        mPosition = position;
        mDrawerLayout.closeDrawer(mDrawerList);
    }