0

PagerAdapter私は3つのフラグメントを作成しています。 がMainActivityで私はこのようなViewPagerを設定します。アンドロイド - タブを選択したときにのみフラグメントビューを膨張

ViewPager pager = (ViewPager) findViewById(R.id.pager); 
    pager.setOffscreenPageLimit(2); 
    pager.setAdapter(new PagerAdapter(getSupportFragmentManager())); 

pager.setOffScreenPageLimit(2)OnViewCreatedは、各フラグメントに1回呼び出されることを確認するために、ここhttps://stackoverflow.com/a/11852707/1662033からです。

public class PagerAdapter extends FragmentPagerAdapter { 

    public PagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     switch (position) { 
      case 0: 
       return "Home"; 
      case 1: 
       return "Live"; 
      case 2: 
       return "Gallery"; 
      default: 
       return null; 
     } 
    } 

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

    @Override 
    public Fragment getItem(int position) { 
     switch (position) { 
      case 0: 
       return new HomeFragment(); 
      case 1: 
       return new LiveFragment(); 
      case 2: 
       return new GalleryFragment(); 
      default: 
       return null; 
     } 
    } 
} 

現在のコードで

は、ここに私のPagerAdapterクラスで一度呼ばれ断片のonCreateViewonActivityCreatedなどのすべて、初めに、それはそれです。

私が抱えている問題は、フラグメント(LiveFragment)の1つで、カメラに接続してライブストリームを表示するカスタムビューがあります。私が欲しいもの

ある - 代わりにどのようにその今の、ユーザーがフラグメントに移動した場合にのみLiveFragmentのビューを膨らませる - そのほかの断片を最初に膨張します。

フラグメントを選択した場合にのみonCreateViewを呼び出す方法はありますか?

答えて

0

FragmentPagerAdapterは、すべてのフラグメントを作成し、それらのすべてを常にメモリに格納します。つまり、あなたのすべてのフラグメントは一度だけ作成され、それらの周りをナビゲートすることができます。

FragmentStatePagerAdapterは、デフォルトでは、任意の時点でメモリ内に3つのフラグメント(現在のフラグメントと現在のフラグメントに左右されます)を作成し、そのフラグメントのみをメモリに保持します。その数を減らすことはできません。ただし、viewpager.setOffScreenPageLimit()を使用すると、メモリ内のフラグメントの数を増やすことができます。

フラグメントが3つしかないので、3つのフラグメントはすべて、Viewpagerの初期化時に作成されます。 viewpager.addOnPageChangeListener()を使用して、現在表示されているフラグメントを画面上で追跡できます。これを使用すると、フラグメントが現在表示されている場合にのみ、ダミーのビューから実際のビューへのライブフラグメントのビューを変更できます。

関連する問題