4

我有使用 Fragments 的 ViewPager .. 片段现在只包含一个带有 ImageView 和大 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然后用新位图更新..但它不起作用..任何线索在哪里我错了??

编辑:添加片段的 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" />
4

1 回答 1

1

我也遇到了同样的问题,花了几个小时寻找解决方案。希望可以帮助其他人解决此问题。

我看到它Fragment正在通过onCreateView,我只在片段在AsyncTask. 我检查onPostExecute了位图是否设置为ImageView,但徒劳无功。唯一第ImageView一次显示图像。甚至invalidate()没有帮助。

经过一番搜索,我发现FragmentPagerAdapter重新实例化了片段。对于更大的数据,建议使用:FragmentStatePagerAdapter. 它使用更少的内存并破坏碎片。

在这里阅读更多: FragmentStatePagerAdapter

于 2013-09-03T21:21:17.200 回答