【问题标题】:ActionBar update in switching between fragments片段间切换中的 ActionBar 更新
【发布时间】:2014-04-28 17:08:32
【问题描述】:

我为我的问题寻找解决方案,但没有找到我想要的。我希望你能帮忙。

我在 Fragment 中实现了列表,通过单击列表来添加要添加的详细片段。 列表片段有其操作栏按钮,而详细信息有另一个操作栏按钮。

细节在寻呼机中实现。寻呼机片段加载片段的位置 此外,该列表是导航抽屉中的一个片段

层次结构是 导航抽屉>>列表片段>>页面片段>>详细片段

我在从列表单击到页面时使用了添加片段,因为我不想像使用替换时那样在返回列表时重新加载。

我的问题是 当我返回列表时,操作栏按钮不会更新。它保留了细节片段的按钮

列表片段。在项目上点击

 PageFragment fragment = new PageFragment();
  FragmentTransaction fragmentTransaction =
                    fragmentManager.beginTransaction();
            fragmentTransaction.add(R.id.frame_container, fragment);
            fragmentTransaction.addToBackStack(null);

            fragmentTransaction.commit();



public boolean onOptionsItemSelected(MenuItem item) {

        // Handle action bar actions click
        switch (item.getItemId()) {
            case android.R.id.home:
            { 
                getActivity().onBackPressed();

                return true;

            }

这是导航抽屉活动中的 backPressed

 @Override
    public void onBackPressed() {
        super.onBackPressed();
      Log.i("Main ","Back pressed");

       mDrawerToggle.setDrawerIndicatorEnabled(true);

    }

在页面片段和详细信息片段上,我会覆盖以下选项

 public boolean onOptionsItemSelected(MenuItem item) {


        switch (item.getItemId()) {
            case android.R.id.home:
            { 
                getActivity().onBackPressed();

                return true;

            }
}

我做得对吗?以及如何解决操作栏按钮问题 当我回到列表时

提前致谢

【问题讨论】:

  • 你应该使用NavUtils而不是手动调用onBackPressed()或者FragmentManager来弹出backstack。
  • 我尝试弹出片段管理器的backstack并得到相同的结果

标签: android android-actionbar fragment


【解决方案1】:

invalidateOptionsMenu 将导致选项菜单被重绘。也许巧妙地使用这种方法,再加上你的活动中的 onResume 将解决你的问题。

【讨论】:

  • 你能给出更多关于使用onResume的解释吗?在这个方法中使用什么?
  • 基本上,您需要检测您的活动何时回到前台,onResume 是当活动再次对用户可见时调用的活动方法。当碎片被移除时,活动恢复,在那里重建选项菜单。 4.bp.blogspot.com/-iAh-GvmfHU0/UMnUEcPv2cI/AAAAAAAAALk/…
  • 我明白了,你能告诉我如何重建选项菜单吗?我可以调用该方法吗?哪些参数作为菜单发送?
  • 调用invalidateOptionMenu(),它是一个Activity的方法。不需要参数。
  • 这并不能解决问题。我在导航抽屉活动和列表片段中的 OnResum 中添加了 supportInvalidateOptionsMenu() 。没有任何变化,我错过了什么吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
相关资源
最近更新 更多