2012-05-22 5 views
0

내 주요 활동 레이아웃은 ViewPager로 구성됩니다. 이 ViewPager에는 다양한 페이지가 있으며 일련의 XML 레이아웃 파일을 통해 팽창됩니다.ViewPager 내의 VideoView

XML 레이아웃 파일 중 하나에는 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; 

} 

여기에 초기화해야한다고 생각하십니까?

+0

동영상보기 mVideoView = (VideoView) pager.findViewById (R.id.myvideoview); –

+0

이 작동하지 않습니다. 나는 레이아웃이 아직 팽창되지 않았기 때문에 VideoView를 찾을 수 없다는 것이 문제라고 생각합니다. – humansg

답변

0

어댑터에서보기를 제거 할 수 있으므로 코드에서 초기화하고 필요할 때 사용할 수 있도록 어댑터에 제공해야합니다.