Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 来自自定义库错误的Android ViewPager_Java_Android_Android Studio_Kotlin_Android Viewpager - Fatal编程技术网

Java 来自自定义库错误的Android ViewPager

Java 来自自定义库错误的Android ViewPager,java,android,android-studio,kotlin,android-viewpager,Java,Android,Android Studio,Kotlin,Android Viewpager,我正在学习如何创建android库,并创建了一个简单的入职库。但是我的自定义模块中的ViewPager有问题 当我左右滑动时,我的秒数项目不显示,或者第一视图和第二视图重叠 我不明白问题出在哪里 [![在此处输入图像描述][2][2] [![[3]][3] 我的库中的主类: public class OnBoardingView extends FrameLayout implements LifecycleObserver { public OnBoardingView(@NonN

我正在学习如何创建android库,并创建了一个简单的入职库。但是我的自定义模块中的ViewPager有问题

当我左右滑动时,我的秒数项目不显示,或者第一视图和第二视图重叠

我不明白问题出在哪里

[![在此处输入图像描述][2][2]

[![[3]][3]

我的库中的主类:

public class OnBoardingView extends FrameLayout implements LifecycleObserver {

    public OnBoardingView(@NonNull Context context) {
        super(context, null);
        this.initialize(context, null);
    }

    public OnBoardingView(@NonNull Context context, @NonNull AttributeSet attrs) {
        super(context, attrs);
        this.initialize(context, attrs);
    }

    private void initialize(@NonNull Context context, @Nullable AttributeSet attrs) {
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        inflater.inflate(R.layout.onboarding_view_root, this);

        List<String> list = new ArrayList<String>();
        list.add("Hello world 1");
        list.add("Hello world 2");
        list.add("Hello world 3");

        ViewPager viewPager = findViewById(R.id._screenPager);
        OnBoardingAdapter<String> onBoardingAdapter = new OnBoardingAdapter<String>(context, list);
        viewPager.setAdapter(onBoardingAdapter);
    }
}
公共类OnBoardingView扩展FrameLayout实现LifecycleObserver{
公共OnBoardingView(@NonNull上下文){
super(上下文,null);
初始化(上下文,null);
}
公共OnBoardingView(@NonNull上下文,@NonNull属性集属性){
超级(上下文,attrs);
初始化(上下文,属性);
}
私有void初始化(@NonNull上下文,@Nullable AttributeSet attrs){
LayoutFlater充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
充气机。充气(右布局。车载视图,此);
列表=新的ArrayList();
添加(“Hello world 1”);
添加(“Hello world 2”);
添加(“Hello world 3”);
ViewPager ViewPager=findViewById(R.id.\U屏幕寻呼机);
OnBoardingAdapter OnBoardingAdapter=新的OnBoardingAdapter(上下文,列表);
viewPager.setAdapter(车载适配器);
}
}
我的适配器:

public class OnBoardingAdapter<T> extends PagerAdapter {

    private Context context;
    private List<T> onBoardingList;

    public OnBoardingAdapter(Context context, List<T> list) {
        this.context = context;
        this.onBoardingList = list;
    }

    @Override
    public int getCount() {
        return this.onBoardingList.size();
    }

    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
        return view.getClass() == object.getClass();
    }

    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
        container.removeView((View) object);
    }

    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
        View view = LayoutInflater.from(context).inflate(R.layout.onboarding_screen_view, null);

        container.addView(view);

        return view;
    }
}
公共类车载适配器扩展PagerAdapter{
私人语境;
私人上市公司;
公共车载适配器(上下文、列表){
this.context=上下文;
this.onBoardingList=列表;
}
@凌驾
public int getCount(){
返回此.onBoardingList.size();
}
@凌驾
公共布尔值isViewFromObject(@NonNull视图,@NonNull对象){
return view.getClass()==object.getClass();
}
@凌驾
public void destructionItem(@NonNull视图组容器,int位置,@NonNull对象){
container.removeView((视图)对象);
}
@非空
@凌驾
公共对象实例化项(@NonNull视图组容器,int位置){
视图=LayoutFlater.from(上下文)。充气(R.layout.Onboard\u screen\u视图,空);
container.addView(视图);
返回视图;
}
}
我的XML文件到内容查看器:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">

<androidx.viewpager.widget.ViewPager
    android:id="@+id/_screenPager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>
</FrameLayout>

每个页面的我的Xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
    android:id="@+id/textView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="onboarding_screen_view" />
</LinearLayout>

在main_活动文件中,我调用它来显示我的模块:

    <com.domaine.onboarding.OnBoardingView
    android:layout_width="0dp"
    android:layout_height="0dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

尝试返回视图而不是容器

如果您想轻松实现这一点,请尝试使用
viewpager2
,您可以使用与
recyclerview
适配器类似的适配器


尝试返回视图而不是容器

如果您想轻松实现这一点,请尝试使用
viewpager2
,您可以使用与
recyclerview
适配器类似的适配器


开始时,请尝试将代码作为代码段而非图像发布,以便于阅读。您好,抱歉,我更新了将代码添加为代码段的问题。开始时,请尝试将代码作为代码段而非图像发布,以便于阅读。您好,抱歉,我更新了将代码作为片段添加的问题。感谢您在从isViewFromObject()中删除getClass()时对我的评论。感谢您在从isViewFromObject()中删除getClass()时对我的评论