首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导航抽屉高亮

问导航抽屉高亮
EN

Stack Overflow用户
提问于 2014-11-27 13:06:13
回答 2查看 934关注 0票数 0

我有一个导航抽屉,我使用选择器获取列表中的高级别项。

代码语言:javascript
复制
<item
    android:state_activated="true"
    android:drawable="@color/pressed_color"/>
<item
    android:drawable="@color/default_color" />

问题是,我重写了反向按钮,将片段更改为我的主要元素,如下所示:

代码语言:javascript
复制
@Override
public void onBackPressed()
{

    onNavigationDrawerItemSelected(0);
    onSectionAttached(1);
    restoreActionBar();

现在,当我按下它改变了片段,但是突出显示的项目停留在我最后一次点击time.How的地方,我能实现也改变突出显示位置吗?使用一些类似于更改文本状态的代码,但是我用适配器创建导航抽屉元素.(我使用Android示例)

代码语言:javascript
复制
    @Override
public void onNavigationDrawerItemSelected(final int position) {
    // update the main content by replacing fragments
  final  FragmentManager fragmentManager = getSupportFragmentManager();
    fragmentManager.beginTransaction()
            .replace(R.id.container, KedvencekFragment.newInstance(position + 1))
                    // .addToBackStack(null)
            .commit();
    if(position==0)
    {
        final Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                fragmentManager.beginTransaction()
                        .replace(R.id.container, KedvencekFragment.newInstance(position + 1))
                       // .addToBackStack(null)
                        .commit();
            }
        }, 250);

    }

和` public void onSectionAttached(int号){ switch (number) { case 1: mTitle = getString(R.string.title_section1);

代码语言:javascript
复制
            break;
        case 2:
            mTitle = getString(R.string.title_section2);
            break;
        case 3:
            mTitle = getString(R.string.title_section3);
            break;
        case 4:
            mTitle = getString(R.string.title_section4);
            break;
        case 5:
           // mTitle = getString(R.string.title_section5);
            break;
        case 6:
            mTitle = getString(R.string.title_section6);
            break;
    }
}`
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-27 16:28:34

我找到了!必须将selectItem()更改为public,然后在onBackPressed中这样调用它!

代码语言:javascript
复制
 @Override
public void onBackPressed()
{
    if(mTitle!=getString(R.string.title_section1)) {
        onNavigationDrawerItemSelected(0);
        onSectionAttached(1);

        mNavigationDrawerFragment.selectItem(0);

        restoreActionBar();
    }
    else{
        super.onBackPressed();
    }


}
票数 0
EN

Stack Overflow用户

发布于 2014-11-27 15:21:31

编辑:

您可以在活动中访问NavigationDrawerFragment,只需将NavigationDrawerFragment的selectItem(int position)方法公开,如下所示:

代码语言:javascript
复制
...
publicvoid selectItem(int position) {
    mCurrentSelectedPosition = position;
    if (mDrawerListView != null) {
        mDrawerListView.setItemChecked(position, true);

    }
    if (mDrawerLayout != null) {
        mDrawerLayout.closeDrawer(mFragmentContainerView);
    }
    if (mCallbacks != null) {
        mCallbacks.onNavigationDrawerItemSelected(position);
    }
}
...

然后在您的onNavigationDrawerItemSelected方法中:

代码语言:javascript
复制
@Override
public void onNavigationDrawerItemSelected(final int position) {
    // update the main content by replacing fragments
  final  FragmentManager fragmentManager = getSupportFragmentManager();
    fragmentManager.beginTransaction()
            .replace(R.id.container, KedvencekFragment.newInstance(position + 1))
                    // .addToBackStack(null)
            .commit();
    if(position==0)
    {
        final Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                fragmentManager.beginTransaction()
                        .replace(R.id.container, KedvencekFragment.newInstance(position + 1))
                       // .addToBackStack(null)
                        .commit();
            }
        }, 250);

    }
    navigationDrawerFragment.selectItem(position);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27171479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档