问题描述
我的应用程序具有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" />
屏幕截图:
有人可以提出解决方案吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)