我有tab viewpagerindicator的错误,如果返回或滑动到上一个片段总是重新加载...
这是我的代码片段
package com.droidersuin.project.viewpagerindicator;
import com.droidersuin.project.app.ContentActivity;
import android.content.Context;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
public class ViewAdapter extends FragmentPagerAdapter{
private Context _context;
String[] page_titles;
public ViewAdapter(Context context, FragmentManager fm, String[] page_title){
super(fm);
_context = context;
this.page_titles = page_title;
}
@Override
public Fragment getItem(int position) {
// TODO Auto-generated method stub
Fragment f = new Fragment();
switch(position){
case 0:
f = ContentActivity.newInstance(_context);
break;
case 1:
f = ContentActivity.newInstance(_context);
break;
case 2:
f = ContentActivity.newInstance(_context);
break;
}
return f;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return page_titles.length;
}
public CharSequence getPageTitle(int position) {
return page_titles[position];
}
}
如果我从片段0滑动到片段索引1并且向后滑动到索引0,则总是重新加载内容, 我想制作,如果后面滑动到以前的片段不再重新加载?它怎么样
谢谢......对不起我的英文..
答案 0 :(得分:4)
尝试像这样设置viewPager的offScreenPageLimit:
mPager.setOffscreenPageLimit(3);
它会将你的三个页面保留在内存中,然后它们将开始重新加载。
答案 1 :(得分:0)
我认为你应该尝试覆盖getItemId方法:
@Override
public long getItemId(int position) {
return position;
}
如果您检查FragmentPagerAdapter的源代码,您会发现它在instantiateItem方法中执行了此操作
final long itemId = getItemId(position);
// Do we already have this fragment?
String name = makeFragmentName(container.getId(), itemId);
Fragment fragment = mFragmentManager.findFragmentByTag(name);
FragmentPagerAdapter使用item id来识别片段是否已经实例化。