0

私の主なアクティビティ レイアウトは、ViewPager で構成されています。この ViewPager にはさまざまなページが含まれており、一連の XML レイアウト ファイルによって拡張されます。

私が持っている XML レイアウト ファイルの 1 つに、VideoView が含まれています。この VideoView を初期化するにはどうすればよいですか?

これはアクティビティの onCreate メソッドです。ViewPagerAdapter によって膨張されていないため、VideoView を初期化できません。

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);      

    ViewPagerAdapter adapter = new ViewPagerAdapter(this);
    ViewPager pager = (ViewPager) findViewById(R.id.viewpager);
    TitlePageIndicator indicator = (TitlePageIndicator) findViewById(R.id.indicator);
    pager.setAdapter(adapter);
    indicator.setViewPager(pager);

// mVideoView is null.. where should I init this?   
    VideoView mVideoView = (VideoView) findViewById(R.id.myvideoview);
    mVideoView.setVideoPath(path);
    mVideoView.setMediaController(new MediaController(this)); 
    mVideoView.start();

}

これは、ViewPagerAdapter の instantiateItem メソッドです。

public Object instantiateItem( View pager, int position )
{
    //Inflate the correct layout
    LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    //layouts[] is an int[] that points to resources such as R.layout.start_page
    View inflatedView = layoutInflater.inflate(layouts[position], null);

    ((ViewPager)pager).addView(inflatedView,0);

    // is this the correct way to do this?
    if (position == 1) {
        VideoView mVideoView = (VideoView) inflatedView.findViewById(R.id.myvideoview);
        mVideoView.setVideoPath(path);
        mVideoView.start();
    }
    return inflatedView;

}

ここで初期化する必要があると思いますか?

4

1 に答える 1

0

アダプターはビューを削除できるため、コード内で初期化して、必要なときに使用できるようにアダプターにアクセスする方法を提供する必要があります。

于 2012-05-22T09:44:42.293 に答える