【问题标题】:Refresh the menu items of Navigation Drawer when the back button is pressed按下返回按钮时刷新 Navigation Drawer 的菜单项
【发布时间】:2013-11-08 01:46:23
【问题描述】:

我正在使用导航抽屉列出主菜单项。菜单项之一是新测验或简历测验。如果没有现有的测验,则菜单项将显示新测验(在导航抽屉中)。选择“新测验”选项后,用户将遇到问题。当按下返回按钮时,在主菜单中,导航抽屉仍然显示新测验选项,而不是继续测验。如何使 backstack 上的 Activity 的 UI 无效?

谢谢。

【问题讨论】:

  • 我添加了以下代码,还是不行:
  • mMenuItems = getResources().getStringArray(R.array.main_menu_with_resume_quiz_option); ((ArrayAdapter)mDrawerList.getAdapter()).notifyDataSetChanged();
  • 以上是选择新测验时的代码。这样当用户返回主活动时,导航栏将显示恢复测验选项。

标签: android android-activity navigation-drawer back-stack


【解决方案1】:

我通过创建菜单项的 ArrayList(而不是 String 对象的数组)来解决这个问题。然后清空适配器的内容,在适配器中加入前面提到的数组列表,在适配器上调用notifyDataSetChanged。

List<String> list = new ArrayList<String>();
for(int counter = 0; counter < mMenuItems.length; counter++) {
    list.add(mMenuItems[counter]);
}
((ArrayAdapter<String>)mDrawerList.getAdapter()).clear();
((ArrayAdapter<String>)mDrawerList.getAdapter()).addAll(list);
((ArrayAdapter<String>)mDrawerList.getAdapter()).notifyDataSetChanged();

【讨论】:

    【解决方案2】:
      public void onDrawerOpened(View drawerView) {
                getSupportActionBar().setTitle(mDrawerTitle);
    
                invalidateOptionsMenu();
                adapter.notifyDataSetInvalidated();
            }
    

    【讨论】:

    • 虽然这段代码可能会回答 OP 的问题,但几句话的解释将有助于当前和未来的读者更好地理解。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-28
    • 2016-11-15
    相关资源
    最近更新 更多