0

뷰 파인더 안에 두 개의 프래그먼트를 사용하고 있습니다. 두 번째 단편에서는 exoplayer를 사용하여 URL에서 비디오를 재생합니다. 내 문제는 활동이 시작될 때 모든 조각이 뷰 페이지에서 자동으로 만들어지기 때문에 비디오가 자동으로로드된다는 것입니다. 한 번에 하나의 Frament를 작성하여 두 번째 조각이 사용자에게 표시되는 경우에만 (탭을 스 와이프하거나 탭하여) 동영상을 재생할 수 있도록하는 방법.뷰 페이지를 사용하여 한 번에 하나의 프래그먼트를 만드는 방법

final ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager); 

       TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs); 

       ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager(), bundle); 

       viewPager.setAdapter(adapter); 

       tabLayout.setupWithViewPager(viewPager); 

이 제발 도와주세요 활동 인사이드 viewpager 어댑터

class ViewPagerAdapter extends FragmentStatePagerAdapter { 
    Bundle bundle; 

    public ViewPagerAdapter(FragmentManager manager, Bundle bundle) { 
     super(manager); 
     this.bundle = bundle; 
    } 

    @Override 
    public Fragment getItem(int position) { 
     Log.d("getItem", position + ""); 
     switch (position) { 
      case 0: 
       IngredientListFragment ingredientListFragment = new IngredientListFragment(); 
       ingredientListFragment.setArguments(bundle); 
       return ingredientListFragment; 
      case 1: 
       StepsListFragment stepsListFragment = new StepsListFragment(); 
       stepsListFragment.setArguments(bundle); 
       return stepsListFragment; 
      default: 
       IngredientListFragment ing = new IngredientListFragment(); 
       ing.setArguments(bundle); 
       return ing; 
     } 
    } 

    @Override 
    public int getCount() { 
     return 2; 
    } 


    @Override 
    public CharSequence getPageTitle(int position) { 
     switch (position) { 
      case 0: 
       return "Ingredients"; 
      case 1: 
       return "Steps"; 
      default: 
       return "Ingredients"; 
     } 
    } 
} 

.

답변

1

한 번에 조각 하나를 만들 필요가 없습니다 : 두 번째 조각이 코드는 exoplayer 실행 사용하는 사용자가 해당 단편 열 때 :

private boolean _hasLoadedOnce = false; // your boolean field 

     @Override 
     public void setUserVisibleHint(boolean isFragmentVisible_) { 
      super.setUserVisibleHint(true); 

      if (this.isVisible()) { 
       if (isFragmentVisible_ && !_hasLoadedOnce) { 

        // move exoplayer code here so this code run only when user select this fragment 

        _hasLoadedOnce = true; 
       } 
      } 
     } 

한 가지 더, 당신은 후에이 줄을 추가해야 viewpager 만들기 :

tabLayout.setupWithViewPager(viewPager); 

viewPager.setOffscreenPageLimit(1); 
+0

감사합니다. @ divyesh-patel. 당신의 솔루션은 잘 작동합니다. – scalp007