好吧,我正在构建一个应用程序,它使用MainActivity中的android.support.v4.view.ViewPager。我通过JSON对象从服务器加载一些视频地址,并希望为每个视频创建一个片段(滑动到下一个)。
我的fragment.xml如下所示:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<VideoView
android:id="@+id/videoView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
/>
<ImageView
android:id="@+id/ImageView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:scaleType="fitXY"
/>
</RelativeLayout>
现在我遇到了以下问题:我想渲染下一个片段,这样用户如果滑动到下一个,就可以看到一些预览图像。此时,我只能在完成onPageScrolled()后才能看到ImageView。
这是我访问碎片的方式视图:
VideoFragment obj = (VideoFragment) pageAdapter.getItem(arg0);
VideoView meinVideo = (VideoView) obj.getView().findViewById(R.id.videoView1);
发生以下情况:如果我试图访问项10,我会得到一个nullpointer异常,但该项存在于pageAdapter中。问题是这条线:
VideoView meinVideo = (VideoView) obj.getView().findViewById(R.id.videoView1);
只有在片段已经呈现的情况下,例如在onPageSelected事件之后,它才起作用。
有没有任何方法可以强制渲染下一个片段,使其在用户滑动之前就已经构建好了?
唯一的原因是您的VideoFragment没有初始化,VideoFragment的onCreateView
没有调用。默认的初始化编号是3。