【问题标题】:Fragment detach() and attach() doesn't update view片段分离()和附加()不更新视图
【发布时间】:2016-05-25 16:12:25
【问题描述】:

我的应用程序中有一个导航抽屉,我想将菜单中的TextView 从登录(当没有用户登录时)更改为我的帐户(当用户登录时)。我使用attach() 和detach() 方法重新加载片段。但是,视图似乎没有更新。使用日志,我已经验证了这段代码可以正确执行。

这是我单击注销时发生的onClick 操作,这似乎成功地注销了我的用户。 SharedPrefs 是一个用于管理SharedPreferences 的类。 deletePrefs() 方法效果很好,因为如果我按下注销并重新启动应用程序,用户就成功注销了。

                case 2:
                SharedPrefs.deletePrefs(getContext());
                closeDrawer();

                NavigationDrawerFragment mNavigationDrawerFragment = MainActivity.getNavigationDrawerFragment();
                mNavigationDrawerFragment.setUserData("", "", BitmapFactory.decodeResource(getResources(), R.drawable.avatar));

                FragmentTransaction ft = getFragmentManager().beginTransaction();
                ft.detach(this).attach(this).commit();
                Log.d("Fragment", "detach, attach");
                break;

这是构建菜单的方法。它在我的 Fragment 的 onCreateView() 方法中调用。

  public List<NavigationItem> getMenu() {
        items = new ArrayList<NavigationItem>();
        items.add(new NavigationItem("Home", getResources().getDrawable(R.drawable.ic_home)));
        if (!SharedPrefs.isLogin(getContext()))
            items.add(new NavigationItem("Login", getResources().getDrawable(R.drawable.ic_login)));
        else
            items.add(new NavigationItem("My Account", getResources().getDrawable(R.drawable.ic_my_account)));
        items.add(new NavigationItem("Logout", getResources().getDrawable(R.drawable.ic_logout)));
        return items;
    }

分离和附加时,onCreateView()不是又执行了吗?因此菜单应该被重建并且TextView应该改变,对吧?

编辑:所以使用日志,我看到onCreateView() 方法在分离和重新连接时没有再次调用。这是正常的吗?还是我以错误的方式分离和重新连接?

【问题讨论】:

  • 为什么会再次执行onCreateView?片段视图已创建。
  • @cyroxis 因为分离和附加片段会重新创建视图,因此再次调用 onCreateView。这不正确吗?
  • onCreateView 被调用,但视图没有更新。它具有先前的视图。有人可以帮忙吗?

标签: android android-fragments


【解决方案1】:

我在使用片段更新时也遇到了同样的问题。我是这样修复的:

FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.detach(this).attach(this).commitAllowingStateLoss();

【讨论】:

    猜你喜欢
    • 2012-10-06
    • 1970-01-01
    • 2018-01-24
    • 1970-01-01
    • 2012-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多