Viewpager2和片段 [英] Viewpager2 and Fragments
问题描述
ViewPager2 does not support direct child views
我正在尝试使用以下代码在片段之间进行转换,但在使用viewpager2时遇到上述错误.
I'm trying to transition between fragments using the following code but I get the above error when using viewpager2.
调用片段1过渡到片段2:
getFragmentManager().beginTransaction().replace(R.id.viewPager2, new q2_fragment()).addToBackStack(null).commit();
主布局中的Viewpager2 XML:
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/viewPager2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="10"
android:orientation="horizontal"
android:scaleType="fitXY" />
主要实例:
final ViewPager2 viewPager2 = findViewById(R.id.viewPager2);
viewPager2.setAdapter(new QuestionsActivity.ScreenSlidePagerAdapter(this));
viewPager2.setUserInputEnabled(false);
如何避免viewpager2出现此错误?
How do I avoid this error with viewpager2?
推荐答案
很乐意为您提供帮助,请详细说明您的要求.你到底想干什么.
Would be happy to help, please elaborate on your requirement. What exactly you want to do.
如果您想从 fragment 1
转到 fragment 2
,则在特定点上,您应该在片段和活动之间使用 interface
,告诉活动将 viewpager
移至具有 fragment 2
的项目.
If you want to go to fragment 2
from fragment 1
, at a particular point then you should use interface
between fragment and activity, to tell the activity to move the viewpager
to the item which has fragment 2
.
接口
public interface FragmentCallback{
public void goTo(int pos);
}
活动
public class MyActivity extends AppCompatActivity implements MyStringListener{
@Override
public void goTo(int pos){
yourviewpagerAdapter.setCurrentItem(pos);
}
}
public class Fragment1 {
private FragmentCallback callBack;
@Override
public void onAttach(Context context) {
super.onAttach(context);
try {
callBack = (FragmentCallback) context;
} catch (ClassCastException castException) {
/** The activity does not implement the listener. */
}
}
public void someEvent() {
if(callBack!=null) {
callBack.goTo(1);
}
}
}
这篇关于Viewpager2和片段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!