android-fragments ViewPager2不显示片段

wfveoks0  于 2022-11-14  发布在  Android
关注(0)|答案(2)|浏览(242)

我尝试在我的应用程序中实现ViewPager 2,这不是我第一次这样做,但现在它不工作了。
几个小时以来,我一直在尝试找到一个解决方案,并尝试不同的选项,但仍然-片段不显示。ViewPager 2显示正确-我通过更改其背景颜色检查了这一点。
我使用的是OneUI 2.4.0库--但我以前测试过这个库,一切正常,现在不行了。

ViewPager 2适配器

public class MainViewPagerAdapter extends FragmentStateAdapter {

    private ArrayList<Fragment> arrayList = new ArrayList<>();

    public MainViewPagerAdapter(@NonNull FragmentManager fragmentManager, @NonNull Lifecycle lifecycle) {
        super(fragmentManager, lifecycle);
    }

    @NonNull
    @Override
    public Fragment createFragment(int position) {
        switch (position) {
            case 0:
                return new MainFragment();
            case 1:
                return new NewsFragment();
            case 2:
                return new ProfileFragment();

        }
        return null;
    }

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

MainFragment.java(其他片段代码看起来相同)

public class MainFragment extends Fragment {
    View mRootView;

    @Nullable
    @Override
    public View onCreateView(
            @NonNull LayoutInflater inflater,
            @Nullable ViewGroup container,
            @Nullable Bundle savedInstanceState) {
        mRootView = inflater.inflate(R.layout.fragment_main, container, true);
        return super.onCreateView(inflater, container, savedInstanceState);
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        Log.d("MainFragment", "Initialized"); // I don't see that in logcat
    }
}

fragment_main.xml(其他片段具有类似的布局)

<?xml version="1.0" encoding="utf-8"?>
<de.dlyt.yanndroid.oneui.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.google.android.material.textview.MaterialTextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="@string/main_page"
        android:textColor="@color/sesl_primary_text"
        android:textSize="24sp"
        android:textStyle="bold" />
</de.dlyt.yanndroid.oneui.widget.NestedScrollView>

主要活动.java

public class MainActivity extends AppCompatActivity {

    private ToolbarLayout mToolbarLayout;
    private ViewPager2 mViewPager;
    private TabLayout mTabLayout;

    private MainViewPagerAdapter viewPagerAdapter;

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

        initialize();
        setup();
    }

    private void initialize() {
        mToolbarLayout = (ToolbarLayout) findViewById(R.id.mToolbarLayout);
        mViewPager = (ViewPager2) findViewById(R.id.mMainPager);
        mTabLayout = (TabLayout) findViewById(R.id.mMainTabLayout);
    }

    private void setup() {
        viewPagerAdapter = new MainViewPagerAdapter(getSupportFragmentManager(), getLifecycle());

        mViewPager.setAdapter(viewPagerAdapter);
   }

问题是,我在ViewPager 2中看不到我的片段。

bvhaajcl

bvhaajcl1#

设法
return mRootView
而不是
return super.onCreateView(inflater, container, savedInstanceState);

baubqpgj

baubqpgj2#

错误的地方是没有将布局添加到根目录。问题是:

return super.onCreateView(inflater, container, savedInstanceState);

但是,你没有使用你的视图,对吗?你使用的是默认的视图,它是空的。所以,要解决这个问题,你需要传递你的视图,而不是那个。所以,像这样返回你的视图:

return mRootView;

相关问题