我有ViewPager使用Fragments ..片段现在只包含一个带有ImageView的framelayout和一个大的TextView作为标题..每个片段图像都是异步加载的..
我的问题是异步任务完成后我可以看到图像标题被新值改变了..但ImageView显示的图像只是第一次加载..
onCreateView方法
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout containing a title and body text.
ViewGroup rootView = (ViewGroup) inflater.inflate(
R.layout.fragment_sliding, container, false);
rootView.setId(imgId);
return rootView;
}
当我的异步加载器加载信息时
@Override
public void onLoadFinished(Loader<DImage> arg0, DImage arg1) {
View v = getView();
ImageView im = (ImageView) v.findViewById(R.id.fragment_image);
im.setImageBitmap(arg1.image);
TextView tv = (TextView) v.findViewById(R.id.fragment_image_title);
tv.setText(arg1.id + "");
}
获得的结果对于所有片段都是不同的...当我滑动图像时,textview文本显示不同..我尝试将图像位图设置为null nd然后使用新位图更新..但它不起作用..我出错的任何线索?
编辑:添加片段的XML
<ImageView
android:id="@+id/fragment_image"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:keepScreenOn="true"
/>
<TextView
android:id="@+id/fragment_image_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:textSize="30dp" />
答案 0 :(得分:1)
我也有同样的问题,并花了几个小时找到解决方案。希望帮助其他人这个解决方案。
我看到Fragment
正在经历onCreateView
,我只在片段在AsyncTask
中可见时才加载图像。我检查了onPostExecute
位图设置为ImageView
,但是徒劳无功。 ImageView
仅首次显示图片。即使invalidate()
没有帮助。
经过一番搜索,我发现FragmentPagerAdapter
重新实例化了片段。建议使用更大的数据:FragmentStatePagerAdapter
。它使用更少的内存并破坏碎片。
在这里阅读更多内容: FragmentStatePagerAdapter