我在一些使用FragmentStatePagerAdapter的活动的onResume()中获得了这个.使用设备的后退按钮时.不总是.不可重复.
我正在使用支持包v4,最新修订版(8).
已经用谷歌搜索过,没有成功找到有用的答案.
在源代码中,它被抛出:FragmentManager.java
@Override
public void putFragment(Bundle bundle, String key, Fragment fragment) {
if (fragment.mIndex < 0) {
throw new IllegalStateException("Fragment " + fragment
+ " is not currently in the FragmentManager");
}
bundle.putInt(key, fragment.mIndex);
}
Run Code Online (Sandbox Code Playgroud)
但是为什么片段的索引<0呢?
实例化片段的代码:
@Override
public Fragment getItem(int position) {
Fragment fragment = null;
switch(position) {
case 0:
fragment = MyFragment.newInstance(param1);
break;
case 1:
fragment = MyFragment2.newInstance(param2, param3);
break;
}
return fragment;
}
@Override
public int getCount() {
return 2;
}
Run Code Online (Sandbox Code Playgroud)
我也无法通过源调试,因为支持包不允许我附加源,出于某种原因......但这是一个不同的问题......
我发现了以下问题: Android:FragmentActivity中的FragmentActivity(导航栏中的Scrollview) .然而,我的这个问题是关于如何使用事务来显示片段以及以安全的方式启用滑动手势检测.注意:我发布的答案中有一个链接(这也是使用事务在容器中显示片段的有效方法,包括两个方案).请看那个.我已经尝试了一些问题,但是通过使用支持ViewPager的片段,而不是嵌套:
详情:https://moqups.com/abhsax130778@gmail.com/lc0ZOERO/p:a5d7b55eb
现在我想要实现的是在上面的第三点使用滑动手势进行右[从左到右]滑动.
我已经使用了GestureListener和SimpleOnGestureListener以及activity的OnTouchEvent.
我面临的问题是:
该手势在活动屏幕的位于片段下方和活动部分的部分上起作用.我希望手势有效
我尝试了以下类,并在这样的布局中更改了我的活动片段.
My Gesture和Touch监听器扩展了框架布局:
public class OnSwipeTouchListener extends FrameLayout {
private final GestureDetector gestureDetector;
private static final String TAG = "OnSwipeTouchListener";
private Context context;
public OnSwipeTouchListener(Context context, AttributeSet attrs) {
super(context, attrs);
this.context=context;
gestureDetector = new GestureDetector(context, new GestureListener());
setClickable(true);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return super.onInterceptTouchEvent(ev);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
gestureDetector.onTouchEvent(motionEvent);
return super.onTouchEvent(event);
}
private final …Run Code Online (Sandbox Code Playgroud)