Viewpager2和片段 [英] Viewpager2 and Fragments

查看:208
本文介绍了Viewpager2和片段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆