gpt4 book ai didi

android-如何避免tablayout child再次加载数据

转载 作者:行者123 更新时间:2023-11-30 00:27:51 24 4
gpt4 key购买 nike

我将 tablayout 与 ViewPager 一起使用,我有 3 个选项卡,我正在为我的选项卡使用 fragment 。问题是,当我转到选项卡 3 时,选项卡 1 的内容完全丢失,需要重新加载,我不想要这样的东西,我想让它们保存数据,但不需要重新加载。

这是我的代码:

private void setupViewPager(ViewPager viewPager) {
Bundle bl = getIntent().getExtras();

Bundle bundle = new Bundle();
bundle.putString("for", bl.getString("for"));
if (bl.getString("for").equals("catid"))
bundle.putString("catid", bl.getString("catid"));

Bundle bundle2 = new Bundle();
bundle2.putString("for", bl.getString("for"));
if (bl.getString("for").equals("catid"))
bundle2.putString("catid", bl.getString("catid"));

Bundle bundle3 = new Bundle();
bundle3.putString("for", bl.getString("for"));
if (bl.getString("for").equals("catid"))
bundle3.putString("catid", bl.getString("catid"));

FragmentList latest = new FragmentList();
bundle.putString("forw","latest");
latest.setArguments(bundle);

FragmentList topvisit = new FragmentList();
bundle2.putString("forw","topvisit");
topvisit.setArguments(bundle2);

FragmentList por_mabhas = new FragmentList();
bundle3.putString("forw","por_mabhas");
por_mabhas.setArguments(bundle3);

ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.addFragment(por_mabhas, "پرمبحث ترین خبرها");
adapter.addFragment(topvisit, "پربازدیدترین اخبار");
adapter.addFragment(latest, "تازه ترین خبرها");
viewPager.setAdapter(adapter);
}

class ViewPagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();

public ViewPagerAdapter(FragmentManager manager) {
super(manager);
}

@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}

@Override
public int getCount() {
return mFragmentList.size();
}

public void addFragment(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}

@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
}



private void declare() {
viewPager = (ViewPager) findViewById(R.id.viewpager);
setupViewPager(viewPager);

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

final int finalPos = 2;
tabLayout.post(new Runnable() {
@Override
public void run() {
int right = ((ViewGroup) tabLayout.getChildAt(0)).getChildAt(finalPos).getRight();
tabLayout.scrollTo(right,0);
tabLayout.getTabAt(finalPos).select();
}
});
}

我该怎么做?

最佳答案

使用 setOffscreenPageLimit(TOTAL_PAGE); 如果您有 N 个页面,您可以使用它,这样它会将所有页面保留在内存中。

viewpager.setOffscreenPageLimit(TOTAL_PAGE);

关于android-如何避免tablayout child再次加载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45036820/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com