【问题标题】:TabLayout Preload next tabTabLayout 预加载下一个选项卡
【发布时间】:2017-03-02 16:43:25
【问题描述】:

我有一个带有 ViewPager 的 tablayout(tab1、tab2、tab3)。似乎在应用程序启动时 tab2 已预加载,这很好。

但是,我需要在 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;
}
}

【问题讨论】:

标签: android android-viewpager android-tablayout android-pageradapter


【解决方案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
    }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-03
    • 2015-08-28
    • 2020-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多