ViewPager中片段内的ProgressBar不会更新

时间:2014-06-21 07:02:43

标签: android android-fragments android-viewpager android-progressbar

我的fragment_main.xml上有一个ProgressBar。

<ProgressBar
    android:id="@+id/progress_total"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    style="@android:style/Widget.ProgressBar.Horizontal"
    android:indeterminate="false" />
<TextView
    android:id="@+id/progress_text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

我在片段中有这个代码,它通过适配器绑定到ViewPager。

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    int random = new Random().nextInt(100);

    View rootView = inflater.inflate(R.layout.fragment_main, container, false);
    ProgressBar progressTotal = (ProgressBar) rootView.findViewById(R.id.progress_total);
    progressTotal.setProgress(random);

    TextView progressText = (TextView) rootView.findViewById(R.id.progress_text);
    progressText.setText(Integer.toString(random));

    return rootView;
}

第一次加载进度条和文本。然后我在按钮上单击重置适配器以重新加载片段。我在文本中更新了随机进度,但从未在进度条上进行更新。尝试自定义绘图,无效,首先将进度设置为零,设置最大值等,但似乎没有任何效果。

我在这里缺少什么?

PS:这是我从活动中重置适配器的方式

viewPager.setAdapter(new FragmentsAdapter(getSupportFragmentManager()));

1 个答案:

答案 0 :(得分:0)

找出设置适配器不一定实例化新片段和所有。卫生署!

必须手动删除片段,直到它们开始正确显示。

基本上我必须在再次设置适配器之前调用以下方法。

private void reinitializeFragments() {
    FragmentManager fragmentManager = getSupportFragmentManager();
    FragmentTransaction transaction = fragmentManager.beginTransaction();
    List<Fragment> fragments = fragmentManager.getFragments();
    for (Fragment fragment : fragments) {
        transaction.remove(fragment);
    }
    transaction.commit();
}