deb*_*ror 4 android android-fragments fragmentpageradapter
我有一个滑动选项卡,有三个不同的片段,用于三个选项卡.FragmentPagerAdapter中的getItem方法调用了两次.我的第一个选项卡加载本地数据,并且具有与下两个选项卡不同的布局(tab2,tab3).Tab2和Tab3从服务器获取数据并相应地加载.
我的问题是,第一次加载getItem被调用两次,这导致tab1和tab2都被执行.虽然tab1只包含本地数据,但由于两次调用tab2已执行并从服务器获取数据.
我不想在tab1中执行tab2及其功能,依此类推.
该getItem()
代码:
@Override public Fragment getItem(int position) {
Fragment fragment = null;
switch (position) {
case 0: fragment = new CommentFragment(); break;
case 1: fragment = new AllPostFragment(); break;
case 2: fragment = new TodayFragment(); break;
}
return fragment;
}
Run Code Online (Sandbox Code Playgroud)
所以,我正在寻找一个解决方案.如果可以,请帮帮我.
vil*_*e89 12
在ViewPager中,您的ViewPager将加载多少个屏幕(片段).您可以通过调用ViewPagers setOffscreenPageLimit方法来设置它.
但是,如果您检查ViewPagers代码,它会告诉您必须至少在屏幕外加载1页:
private static final int DEFAULT_OFFSCREEN_PAGES = 1;
public void setOffscreenPageLimit(int limit) {
if (limit < DEFAULT_OFFSCREEN_PAGES) {
Log.w(TAG, "Requested offscreen page limit " + limit
+ " too small; defaulting to " + DEFAULT_OFFSCREEN_PAGES);
limit = DEFAULT_OFFSCREEN_PAGES;
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
一句话:我不认为你只能加载当前的片段,抱歉.
编辑:但是如果你想加载,比如只有当片段对用户可见时才从网络加载,你可以在片段中做这样的事情:
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
// Fetch data or something...
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4148 次 |
最近记录: |