0

我有一个tablayout(tab1,tab2,tab3)与ViewPager。看起来在应用程序启动时,tab2被预加载,这很好。TabLayout预加载下一个选项卡

但是,我需要在tab1上输入一些数据,我希望tab2更新其片段并隐藏一些基于从tab1输入的数据的按钮。

如何做到这一点?有没有办法预先加载标签,以便当我滑动到tab2时,它将获取最新的数据而不是旧的数据?

这里是我的代码

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

在我的活动中onCreate方法。

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) { 

     } 
    }); 

这里是我的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

您detailfragment片段

@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 
    } 
    } 
相关问题