Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.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
使用VIewPager2(Java)的简单滑动屏幕_Java_Android_Android Viewpager - Fatal编程技术网

使用VIewPager2(Java)的简单滑动屏幕

使用VIewPager2(Java)的简单滑动屏幕,java,android,android-viewpager,Java,Android,Android Viewpager,我正在尝试创建一个布局,它将显示三个屏幕,可以通过滑动或按钮进行更改。在这些按钮之间应该是所选页面的点指示器 我花了很多时间搜索样本如何做,但通常我会在一些问题上结巴。我不需要动态添加碎片的选项。最好的有效解决方案是,但我无法创建三个不同的片段,它缺少圆点指示器 有人能帮我解决这个问题吗?非常感谢。您可以通过从RecyclerView.adapter()扩展来创建适配器,并对每个页面使用简单布局(而不是片段),然后将该适配器设置为viewpager2.adapter=adapter您可以创建一个

我正在尝试创建一个布局,它将显示三个屏幕,可以通过滑动或按钮进行更改。在这些按钮之间应该是所选页面的点指示器

我花了很多时间搜索样本如何做,但通常我会在一些问题上结巴。我不需要动态添加碎片的选项。最好的有效解决方案是,但我无法创建三个不同的片段,它缺少圆点指示器


有人能帮我解决这个问题吗?非常感谢。

您可以通过从RecyclerView.adapter()扩展来创建适配器,并对每个页面使用简单布局(而不是片段),然后将该适配器设置为viewpager2.adapter=adapter

您可以创建一个扩展到FragmentStateAdapter的新类,并将该类设置为viewpager的适配器,如下所示:

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.fragment.app.FragmentTransaction;
import androidx.viewpager2.adapter.FragmentStateAdapter;
import androidx.viewpager2.widget.ViewPager2;

import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

ViewPager2 viewPager2;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    viewPager2 = findViewById(R.id.viewpager2);
    viewPager2.setAdapter(new ViewPagerFragmentAdapter(this));
}

static class ViewPagerFragmentAdapter extends FragmentStateAdapter {

    public ViewPagerFragmentAdapter(@NonNull FragmentActivity fragmentActivity) {
        super(fragmentActivity);
    }

    @NonNull
    @Override
    public Fragment createFragment(int position) {
        switch (position) {
            case 0:
                return new Vertical1();
            case 1:
                return new Vertical2();
            case 2:
                return new Vertical3();
        }
        return new Vertical2();
    }

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

}

嗨,非常感谢你的帮助。这正是我想要的。