后退后更新导航抽屉

时间:2015-03-18 09:28:00

标签: android android-fragments navigation-drawer fragment-backstack

我正在使用Android实施Navigation Drawer申请,我遇到了问题。

我从Android工作室的模板(带导航抽屉的Android应用程序)开始,并添加了一个新的部分 - 设置。当点击设置按钮时,用户将被带到一个新的活动,用户可以通过按下"向上"操作栏中的按钮(效果很好)或按下物理后退按钮。那部分并没有那么好用。

按下" up"按钮然后打开导航栏,我的主页突出显示(选中)。但是,当使用后退按钮并打开导航抽屉时,会选择“设置”项,就像用户正在查看该页而不是主页一样。

所以这是因为导航抽屉片段没有更新,我找不到任何方法来解决这个问题。我想要的是重新创建导航抽屉(我认为按下" up"按钮时会发生这种情况)。你知道我怎么能做到这一点吗?

我开始研究基于此的解决方案:

getSupportFragmentManager().addOnBackStackChangedListener(
    new FragmentManager.OnBackStackChangedListener() {
        public void onBackStackChanged() {
            // Update your UI here.
        }
    });

但我不知道在那里写什么会更新整个用户界面。 (尝试调用onCreate(),但它太难看了,并且不是正确的方法)。

有什么建议吗?

更新:

从其他活动按BACK时,不会发送onBackStackChanged事件。仅适用于当前行为中的片段。

2 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。我在ListView适配器中使用了notifyDataSetChanged()。

在我使用的getView()中,

if(mListView.isItemChecked(position)) {
            convertView.setBackgroundColor(getResources().getColor(R.color.md_black_1000_12));
        }else{
            convertView.setBackgroundColor(getResources().getColor(android.R.color.transparent));
        }
        notifyDataSetChanged();

答案 1 :(得分:0)

你必须覆盖动作栏后退按钮,如下所示:

    @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            // TODO Auto-generated method stub
            switch (item.getItemId()) {
            case android.R.id.home:
    this.finish();

//or

super.onBackPressed();

                break;

            }
            return true;

        }