0

私はViewPagerでtablayout(tab1、tab2、tab3)を持っています。アプリの起動時にtab2がプリロードされているようです。これは問題ありません。TabLayout Preload next tab

しかし、私はtab1にいくつかのデータを入力する必要があり、tab2の断片を更新し、tab1からのデータ入力に基づいていくつかのボタンを隠しておきたいと思います。

どうすればよいですか?タブをプリロードしない方法がありますので、タブ2にスワイプすると、古いデータの代わりに最新のデータが取得されるようになりますか?

はここでの活動の中に私のonCreateメソッドで自分のコード

private ViewPager viewPager; 
private PagerAdapter adapter; 
private TabLayout tabLayout; 

です。

tabLayout.addTab(tabLayout.newTab().setText("Input")); 
    tabLayout.addTab(tabLayout.newTab().setText("Detail")); 
    tabLayout.addTab(tabLayout.newTab().setText("Chart")); 
    tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 

    viewPager = (ViewPager) findViewById(R.id.pager); 
    adapter = new PagerAdapter(getSupportFragmentManager(), tabLayout.getTabCount()); 
    viewPager.setAdapter(adapter); 
    viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); 
    tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
     @Override 
     public void onTabSelected(TabLayout.Tab tab) { 
      viewPager.setCurrentItem(tab.getPosition()); 
     } 

     @Override 
     public void onTabUnselected(TabLayout.Tab tab) { 

     } 

     @Override 
     public void onTabReselected(TabLayout.Tab tab) { 

     } 
    }); 

はここにあなたのdetailfragment断片上に私のpageadapaterクラス

public class PagerAdapter extends FragmentPagerAdapter { 
int mNumOfTabs; 
private InputFragment inputFragment; 
private DetailFragment detailFragment; 
private ChartFragment chartFragment; 

public PagerAdapter(FragmentManager fm, int NumOfTabs) { 
    super(fm); 
    this.mNumOfTabs = NumOfTabs; 
} 

@Override 
public int getItemPosition(Object object) { 
    // TODO Auto-generated method stub 
    return POSITION_NONE; 
} 


@Override 
public Fragment getItem(int position) { 
    switch (position) { 
     case 0: 
      inputFragment = new InputFragment(); 
      return inputFragment; 
     case 1: 
      detailFragment = new detailFragment(); 
      return detailFragment; 
     case 2: 
      chartFragment = new ChartFragment(); 
      return chartFragment; 
     default: 
      return null; 
    } 
} 

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

答えて

1

@Override 
    public void setUserVisibleHint(boolean isVisibleToUser) { 
    super.setUserVisibleHint(isVisibleToUser); 
    if (isVisibleToUser) { 
//check values on tab 1 and try to update your tab 2 views accordingly 
    } 
    }