我尝试在我的应用程序中实现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中看不到我的片段。
2条答案
按热度按时间bvhaajcl1#
设法
return mRootView
而不是
return super.onCreateView(inflater, container, savedInstanceState);
个baubqpgj2#
错误的地方是没有将布局添加到根目录。问题是:
但是,你没有使用你的视图,对吗?你使用的是默认的视图,它是空的。所以,要解决这个问题,你需要传递你的视图,而不是那个。所以,像这样返回你的视图: