gpt4 book ai didi

java - 非常简单的viewPager2

转载 作者:行者123 更新时间:2023-12-01 16:21:09 25 4
gpt4 key购买 nike

我是应用程序开发新手,我想在应用程序的页面之间创建流畅的选项卡式过渡。问题是,这需要我不熟悉的 fragment 和viewpager2(过去几个月我一直在处理 Activity )。为了学习如何做到这一点,我试图创建一个非常简单的 viewPager2 用例(只是两个带有 textView 的简单 fragment ),并遇到了我的第一个问题:在下面的代码中,“getSupportFragmentManager 带有红色下划线。它给了我将适配器构造函数中的参数从 FragmentActivity 更改为 FragmentManager 的建议。但是,当我这样做时,“super(fa)”中的“fa”会带有红色下划线,我不知道如何修复此问题网上的大部分教程都是针对viewPager之前版本的,而不是针对ViewPager2的。关于viewPager2的大部分都是用Kotlin编写的,我不想学,部分是因为名字,部分是因为我接下来计划学习 Dart,因为它允许将相同的代码应用于 Android 和 Apple 设备。有谁知道如何修复该错误,或​​者可以向我指出一个非常简单的 viewPager2 的 java 实现,我可以将其用作模板?我相信这甚至可以写在这里!非常感谢!

MainActivity 包括适配器:

    public class MainActivity extends AppCompatActivity {

FragmentStateAdapter fragmentStateAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ViewPager2 vp2 = findViewById(R.id.viewPager);
fragmentStateAdapter = new ScreenSlidePagerAdapter(this);
}

private class ScreenSlidePagerAdapter extends FragmentStateAdapter {
private static final int NUM_PAGES = 2;

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

@Override
public Fragment createFragment(int position) {

switch (position) {
case 0:
return FragmentOne.newInstance(0,"I'm Fragment 1");
case 1 :
return FragmentTwo.newInstance(1, "I'm fragment 2");
default: return null;

}
}

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

}

fragment 示例:

    public class FragmentOne extends Fragment {

private String mParam1;
private int page;


public FragmentOne() {

}

public static FragmentOne newInstance(int page, String param1) {
FragmentOne fragment = new FragmentOne();
Bundle args = new Bundle();
args.putInt("someInt", page);
args.putString("someTitle", param1);
fragment.setArguments(args);
return fragment;
}

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mParam1 = getArguments().getString(mParam1);
page = getArguments().getInt(mParam1, 0);

}
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

View view = inflater.inflate(R.layout.fragment_one, container, false);
TextView textView = view.findViewById(R.id.fragmentOne);
textView.setText(mParam1);
return view;
}
}

XML fragment :

<FrameLayout 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"
tools:context=".FragmentOne">


<TextView
android:id="@+id/fragmentOne"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="fragmentOne"
android:textColor="@android:color/black"/>

</FrameLayout>

最佳答案

将您的代码更改为此,您的适配器将 FragmentActivity 作为参数

fragmentStateAdapter = new ScreenSlidePagerAdapter(this);
mParam1 = getArguments().getString("someTitle");
page = getArguments().getInt("someInt", 0);

关于java - 非常简单的viewPager2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62273569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com