TabLayout和ViewPager的问题

问题描述

我的应用程序具有NavigationDrawer。 NavigationDrawer的第二项(片段)打开一个Activity,并且Activity具有六个Fragments。其中两个具有带有ViewPager的TabLayout。在更新Gradle之前,一切正常。更新后,带有TabLayout和ViewPager的片段出现问题,选项卡(片段)为空白,但是具有标题,而ViewPager无法正常工作。我无法滑动更改选项卡,因此必须单击选项卡标题。我不确定是否要进行更新,但是我已经在本地历史记录中进行了更改,并且一切都相同,相关的片段和布局没有任何变化。

fragment_tab.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:background="@color/colorBackground"
    android:orientation="vertical">

        <com.google.android.material.tabs.TabLayout
            android:id="@+id/tabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:tabGravity="fill"
            app:tabMode="fixed"
            app:tabTextColor="@color/colorText" />

        <androidx.viewpager.widget.ViewPager
            android:id="@+id/view_pager"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

</LinearLayout>

TabFragment.java:

public class FragmentTab extends Fragment {
    private ViewPager vp;
    private TabLayout tab;
    private List<Fragment> listFragment;
    private List<String> listTitle;
    private AdapterTab adapter;
   
    private void init(View v) {
        set();
        vp = v.findViewById(R.id.view_pager);
        adapter = new AdapterTab(getActivity().getSupportFragmentManager(),FragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT,listFragment,listTitle);
        tab = v.findViewById(R.id.tabs);
        vp.setAdapter(adapter);
        tab.setupWithViewPager(vp);
    }    

    private void set() {
        listFragment = new ArrayList<>();
        listTitle = new ArrayList<>();
        Tab1 tab1 = new Tab1();
        Tab2 tab2 = new Tab2();
        listFragment.add(tab1);
        listFragment.add(tab2);
        listTitle.add("Tab 1");
        listTitle.add("Tab 2");
    }

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater,@Nullable ViewGroup container,@Nullable Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.fragment_tab,container,false);
        ActionBar actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar();
        actionBar.setTitle("Tab Fragment");
        init(v);
        return v;
    }
}

AdapterTab.java:

public class AdapterTab extends FragmentPagerAdapter {

    private final List<Fragment> listFragment;
    private final List<String> listTitle;

    public AdapterTab(@NonNull FragmentManager fm,int behavior,List<Fragment> listFragment,List<String> listTitle) {
        super(fm,behavior);
        this.listFragment = listFragment;
        this.listTitle = listTitle;
    }

    @NonNull
    @Override
    public Fragment getItem(int position) {
        return listFragment.get(position);
    }

    @Override
    public int getCount() {
        return listFragment.size();
    }

    @Nullable
    @Override
    public CharSequence getPageTitle(int position) {
        return listTitle.get(position);
    }
}

我一直在寻找解决方案,并尝试了其他人提出的几乎所有建议的解决方案。 我更改了适配器,并尝试使用switch / case添加Fragments(选项卡)。

我尝试了FragmentStatePagerAdapter而不是FragmentPagerAdapter。

public class AdapterTab extends FragmentStatePagerAdapter

我尝试使用getChildFragmentManager()而不是getActivity()。getSupportFragmentManager()。

adapter = new AdapterTab(getChildFragmentManager(),listeFragment,listeBaslik);

我将ViewPager的高度更改为0 dp和wrap_content。

 <androidx.viewpager.widget.ViewPager
                android:id="@+id/view_pager"
                android:layout_width="match_parent"
                android:layout_height="0dp" />

屏幕截图:

enter image description here

有人可以提出解决方案吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)