你如何重绘一个片段?

时间:2012-03-15 17:29:37

标签: android user-interface android-fragments

我有一个应用程序,其中包含显示片段的选项卡。我遇到的问题是其中一个选项卡加载了另一个活动,然后写入数据库。当用户完成该活动并返回到片段时,我希望片段检查数据库并隐藏或显示UI元素。我可以检查数据库就好了。我无法在返回片段时修改UI。

我试图.invalidate()视图。 我已经尝试将所有重绘UI内容放在onResume()中,它永远不会被调用。

我觉得它应该与我的Tab FragmentActivity有关。这就是我所拥有的。

@Override
    public void onTabReselected(Tab tab) {
        FragmentTransaction ft = mActivity.getSupportFragmentManager().beginTransaction();
        if (mFragment == null) {
            mFragment = Fragment.instantiate(mActivity, mClass.getName(), mArgs);
            ft.add(android.R.id.content, mFragment, mTag);
            ft.commit();
        } else {
            ft.attach(mFragment);
            ft.commit();
        }
    }

它还没有重新绘制标签。

我该怎么做?如果有人有更好的想法,我也会更倾向于采取其他方式来解决这个问题。

1 个答案:

答案 0 :(得分:1)

所以我解决了自己的问题。它可能是一个hack并且与onTabReselected()无关,但解决方案如下。

在AndroidManifest.xml中,我将以下行添加到标签活动:

android:stateNotNeeded="true"

然后,在通过Intent对数据库进行更改后,我返回到标签片段。这会强制标签每次进入时都会刷新。

也许这会帮助别人。