我的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()));
答案 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();
}