在观看和研究这个主题的每个帖子之后,我没有为我的错误找到解决方法。
我有一个PagerSlidingTabStrip
,它是ViewPager
的选择器,ViewPager
的适配器是:
public class ViewPagerAdapter extends FragmentStatePagerAdapter{
public ViewPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
@Override
public Fragment getItem(int i) {
return fragments.get(i);
}
@Override
public int getCount() {
return fragments.size();
}
@Override
public CharSequence getPageTitle(int position) {
if (position == 0)
return "ALL";
else
return tipos.get(position-1).getNombre();
}
}
我在Activity
上托管寻呼机。
对象fragments
是:
HashMap<Integer,PostFragment> fragments = new HashMap<Integer,PostFragment>();
我将HashMap初始化为:
public void initHashMap(HashMap<Integer,PostFragment> fragments) {
if (fragments.size() > 0)
return;
PostFragment allFragment = new PostFragment();
Bundle argsAll = new Bundle();
argsAll.putInt("tipo", 0);
argsAll.putSerializable("tipos", (Serializable)tipos);
allFragment.setArguments(argsAll);
fragments.put(0, allFragment);
for (int i = 0; i < tipos.size(); i++) {
PostFragment fragment = new PostFragment();
Bundle args = new Bundle();
args.putInt("tipo", i+1);
args.putSerializable("tipos", (Serializable)tipos);
fragment.setArguments(args);
fragments.put(i+1, fragment);
}
}
问题: 当我滑动时,第一次碎片被加载。如果我快速滑动,一些碎片在回到它们时就开始不再工作了。 有时,当我点击标签条时,它们也不会加载。
我已经尝试了几乎所有我曾经尝试过的解决方法。
这是我托管它的XML:
<RelativeLayout
android:id="@+id/parentViews"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/rl1" >
<RelativeLayout
android:id="@+id/searchView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/pagerBackground"
android:visibility="gone" >
<RelativeLayout
android:id="@+id/searchRL"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_margin="10dp"
android:background="@drawable/fondoblancoborder" >
<ImageView
android:id="@+id/borrarEditTextIV"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:padding="10dp"
android:src="@drawable/borrar_edittext" />
<EditText
android:id="@+id/busquedaTagET"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_marginBottom="5dp"
android:layout_marginLeft="10dp"
android:layout_marginTop="5dp"
android:layout_toLeftOf="@+id/borrarEditTextIV"
android:ems="10"
android:imeOptions="actionSearch"
android:inputType="text"
android:paddingRight="5dp" >
</EditText>
</RelativeLayout>
<com.example.help.resources.FlowLayout
android:id="@+id/tagLL"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/searchRL"
android:layout_alignRight="@+id/searchRL"
android:layout_below="@+id/searchRL"
android:layout_marginBottom="2dp" >
</com.example.help.resources.FlowLayout>
</RelativeLayout>
<com.astuetz.PagerSlidingTabStrip
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="15dp"
android:paddingBottom="15dp"
android:background="@color/pagerBackground" />
</RelativeLayout>
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/parentViews" >
</android.support.v4.view.ViewPager>
我也尝试了:
WeakReference
.notifyDataChanged()
getItem()
时都会创建片段。setRetainInstance(true)
FragmentStatePagerAdapter
更改为FragmentPagerAdapter
要知道的事情:
getItem(int position)
被称为onCreateView
有任何线索吗? 在此先感谢!!
答案 0 :(得分:0)
为什么覆盖getItemPosition()
以返回POSITION_NONE
?
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
这意味着每个片段不再对其当前位置有效。
主机视图尝试确定某个项目是否已被调用 位置发生了变化。如果位置为,则返回POSITION_UNCHANGED 如果项目为否,则给定项目未更改或POSITION_NONE 适配器中存在的时间更长。
尝试删除此方法。