问题描述
我有一个带有多个片段的导航抽屉,而一个片段上有多个片段 UsersFragment 它有一个 Tablayout 和 ViewPager,带有片段和一个子项,但我无法查看附有标签的片段,并且无法滑动。
这在我的片段中 导航抽屉中的UsersFragment
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="@drawable/white_rectangle_background"
tools:context=".UsersFragment">
<!-- Todo: Update blank fragment layout -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
tools:ignore="MissingConstraints"
android:id="@+id/layoutToper"
android:layout_marginTop="50dp"
android:background="@drawable/header_background"
>
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<com.google.android.material.tabs.TabLayout
android:id="@+id/usersTabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabBackground="@color/colorPrimary"
app:tabIndicatorColor="@color/colorWhite"
app:tabTextColor="@color/colorWhite"/>
</com.google.android.material.appbar.AppBarLayout>
<androidx.viewpager.widget.ViewPager
android:id="@+id/usersViewPager"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:ignore="MissingConstraints"
tools:layout_editor_absoluteX="0dp"
tools:layout_editor_absoluteY="0dp" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
UsersViewPager 适配器
package com.okellomwaka.yowasteadminapp.adapters;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentStatePagerAdapter;
import java.util.ArrayList;
import java.util.List;
public class UsersViewPagerAdapter extends FragmentStatePagerAdapter {
private List <Fragment> fragmentList= new ArrayList<>();
private List<String> titleList = new ArrayList<>();
public UsersViewPagerAdapter(@NonNull FragmentManager fm) {
super(fm);
}
@NonNull
@Override
public Fragment getItem(int position) {
return fragmentList.get(position);
}
@Override
public int getCount() {
return fragmentList.size() ;
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return titleList.get(position);
}
public void addFragment (Fragment fragment,String title){
fragmentList.add(fragment);
titleList.add(title);
}
}
UsersFragment JAVA
package com.okellomwaka.yowasteadminapp;
import android.content.Context;
import android.os.Bundle;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.viewpager.widget.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import com.google.android.material.tabs.TabLayout;
import com.okellomwaka.yowasteadminapp.Fragments.UsersAdminFragment;
import com.okellomwaka.yowasteadminapp.Fragments.UsersCustomersFragment;
import com.okellomwaka.yowasteadminapp.Fragments.UsersHualerFragment;
import com.okellomwaka.yowasteadminapp.adapters.UsersViewPagerAdapter;
public class UsersFragment extends Fragment {
View myFragment;
TabLayout tabLayout;
ViewPager viewPager;
public UsersFragment(){
}
public UsersFragment getInstance (){
return new UsersFragment();
}
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {
// Inflate the layout for this fragment
myFragment= inflater.inflate(R.layout.fragment_users,container,false);
viewPager=myFragment.findViewById(R.id.usersViewPager);
tabLayout=myFragment.findViewById(R.id.usersTabLayout);
return myFragment;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
// final Context context= getActivity();
setUpViewPager( viewPager);
tabLayout.setupWithViewPager(viewPager);
tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
// Toast.makeText(context,"Context Text",Toast.LENGTH_SHORT).show();
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
}
private void setUpViewPager(ViewPager viewPager) {
UsersViewPagerAdapter adapter = new UsersViewPagerAdapter(getChildFragmentManager());
adapter.addFragment(new UsersAdminFragment(),"Admins");
adapter.addFragment(new UsersCustomersFragment(),"Customers");
adapter.addFragment(new UsersHualerFragment(),"Hualers");
viewPager.setAdapter(adapter);
}
}
我的每个 TAB 布局都有一个类似的布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
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"
android:background="@color/colorPrimary"
tools:context=".Fragments.UsersAdminFragment">
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Users-Admins"
android:textSize="50sp"
android:padding="50dp"
android:gravity="center"
tools:layout_editor_absoluteY="237dp" />
</RelativeLayout>
import android.view.ViewGroup;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.okellomwaka.yowasteadminapp.R;
public class UsersAdminFragment extends Fragment {
@Override
public void onAttach(@NonNull Context context) {
super.onAttach(context);
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater,@Nullable ViewGroup container,@Nullable Bundle savedInstanceState) {
Toast.makeText(this.getContext(),"gggg",Toast.LENGTH_SHORT).show();
return inflater.inflate(R.layout.users_admins_tab,false);
// return super.onCreateView(inflater,savedInstanceState);
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)