1

您好观众,我正在使用 viewpager2 制作带有 lottie 动画的入职/演练屏幕。由于 viewpager2 使用片段,因此很容易在其中使用动画。但是我在滑动屏幕时遇到了问题。问题是“public Fragment createFragment(int position)”的位置在第一张幻灯片上加倍,即最初位置=0,但在第一张幻灯片后位置值为2,跳过位置=1值。我试图传递 null 作为回报,但它使应用程序崩溃,因为它接受片段。在下一张幻灯片之后,位置值增加了 1,即位置 = 3,这是我们想要的增量。位置值仅在第一张幻灯片上增加 +2,之后,对于所有下一张幻灯片,该值通常增加 +1。

供参考,我使用的是官方开发者端,

官方开发者页面供参考

是的,我没有在该类中的任何其他方法中使用该位置。如果有人知道为什么会发生这种情况以及我该如何解决这个问题,请帮助我。

JAVA代码

public class SliderMainPager extends FragmentActivity {
private static final int NUM_PAGES = 4;
private ViewPager2 viewPager;

@Override
protected void onCreate(Bundle savedInstanceState) {
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_slider_main_pager);

    viewPager = findViewById(R.id.pager);
    FragmentStateAdapter pagerAdapter = new ScreenSlidePagerAdapter(this);
    viewPager.setAdapter(pagerAdapter);
    viewPager.setOrientation(ViewPager2.ORIENTATION_HORIZONTAL);
}
private class ScreenSlidePagerAdapter extends FragmentStateAdapter {

    ScreenSlidePagerAdapter(FragmentActivity fa) {
        super(fa);
    }

    @NonNull
    @Override
    public Fragment createFragment(int position) {

        Log.d("pos", "position :" + position);

        if (position == 0) {
            return new SliderPage1();
        } else if (position == 1) {
            return new SliderPage2();
        } else if (position == 2) {
            return new SliderPage3();
        } else if (position == 3) {
            getstarted.setVisibility(View.VISIBLE);
            return new SliderPage4();
        }
        return null;
    }

    @Override
    public int getItemCount() {
        return NUM_PAGES;
    }
}

public void skip(View view) {
    startActivity(new Intent(this, MainActivity.class));
    finish();
}
}

XML 代码

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/md_white_1000"
android:padding="10dp"
tools:context=".SliderMainPager">

<Button
    android:id="@+id/skip"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentEnd="true"
    android:layout_marginTop="2dp"
    android:layout_marginEnd="2dp"
    android:background="@drawable/button_design"
    android:drawableEnd="@drawable/ic_skip_next_black_24dp"
    android:drawableTint="@color/md_light_blue_A700"
    android:onClick="skip"
    android:padding="10dp"
    android:text="@string/skip"
    android:textColor="@color/md_light_blue_A700" />

<androidx.viewpager2.widget.ViewPager2
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="500dp"
    android:layout_below="@id/skip"
    android:layout_marginTop="5dp" />

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="120dp"
    android:layout_below="@id/pager"
    android:layout_marginTop="10dp">

    <Button
        android:id="@+id/btn_getstarted"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/button_design"
        android:drawableTint="@color/md_light_blue_A700"
        android:padding="15dp"
        android:text="@string/let_s_get_started"
        android:visibility="invisible"
        android:textColor="@color/md_light_blue_A700" />

</RelativeLayout>

</RelativeLayout>
4

0 回答 0