在使用ViewPager的选项卡布局上获取空白视图

我正在尝试创建一个标签布局,其中三个标签分别显示图像和文本。不幸的是,这些选项卡不显示任何内容,而且我在Logcat上也找不到关于错误的任何内容。

这是我的主要代码:

public class JavaTradHouse extends AppCompatactivity {
private TabLayout tabLayout;
private ViewPager viewPager;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_java_trad_house);
    tabLayout = (TabLayout) findViewById(R.id.tabLayout);
    viewPager = (ViewPager) findViewById(R.id.viewpagertradHouses);

    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
    adapter.AddFragment(new FragmentJoglo(),"Joglo Traditional House");
    adapter.AddFragment(new FragmentSukuTengger(),"Suku Tengger Traditional House");
    adapter.AddFragment(new FragmentTogogAnjing(),"Togog Anjing Traditional House");

    viewPager.setadapter(adapter);
    tabLayout.setupWithViewPager(viewPager);

}
}

这是我的ViewPager适配器类代码:

public class ViewPagerAdapter extends FragmentPagerAdapter {

   private final List<Fragment> fragmentList = new ArrayList<>();
   private final List<String> fragmentListTitles = new ArrayList<>();


   public ViewPagerAdapter(@NonNull FragmentManager fm) {
        super(fm);
    }

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

        @NonNull
        @Override
        public Fragment getItem(int position) {

           return fragmentList.get(position);
           /* switch (position)
            {
                case 1 :
                    FragmentJoglo  joglofragment = new FragmentJoglo();
                    return joglofragment;
                case 2 :
                    FragmentSukuTengger sukutenggerfragment = new FragmentSukuTengger();
                    return sukutenggerfragment;
                case 3 :
                    FragmentTogogAnjing togoganjingfragment = new FragmentTogogAnjing();
                    return togoganjingfragment;
                default :
                    return null;

            }*/ // Turning this one into a comment in case this method works
        }

        @Override
        public int getcount() {
            return fragmentList.size();
        }
        public void AddFragment(Fragment fragment,String Title){
           fragmentList.add(fragment);
           fragmentListTitles.add(Title);
        }
    }

我对标签布局并不陌生,原因是来自我所在国家/地区的参考文献很少,而且没有深入地讨论它。我在这里能做什么?如前所述,logcat不会显示任何内容,因为它成功执行了程序。

任何帮助将不胜感激。

fluid120 回答:在使用ViewPager的选项卡布局上获取空白视图

使用此ViewPagerAdaper

class ViewPagerAdapter(manager: FragmentManager) : FragmentPagerAdapter(manager) {
    private val mFragmentList = ArrayList<androidx.fragment.app.Fragment>()
    private val mFragmentTitleList = ArrayList<String>()

    override fun getItem(position: Int): androidx.fragment.app.Fragment {
        return mFragmentList[position]
    }

    override fun getCount(): Int {
        return mFragmentList.size
    }

    fun addFragment(fragment: androidx.fragment.app.Fragment,title: String) {
        mFragmentList.add(fragment)
        mFragmentTitleList.add(title)
    }

    fun addFragment(title: String) {
        mFragmentTitleList.add(title)
    }

    override fun getPageTitle(position: Int): CharSequence? {
        return mFragmentTitleList[position]
    }

    fun getFragmentList(): ArrayList<androidx.fragment.app.Fragment> {
        return mFragmentList
    }
}

,这是Viewpager Adapter的主要代码 调用onCreate()中的setupviewpager()方法。

private fun setupViewPager() {
        try {
            adapter = ViewPagerAdapter(childFragmentManager)
            val customersFragment = CustomerListFragment()
            val suppliersFragment = SupplierListFragment()
            adapter.addFragment(customersFragment,getString(R.string.str_customers))
            adapter.addFragment(suppliersFragment,getString(R.string.str_suppliers))
            viewPager?.adapter = adapter
            tabs?.setupWithViewPager(viewPager!!)
            onTabSelectedListener()
        } catch (e: Exception) {
            e.printStackTrace()
        }
    }

    private fun onTabSelectedListener(): TabLayout.OnTabSelectedListener {

        return object : TabLayout.OnTabSelectedListener {
            override fun onTabSelected(tab: TabLayout.Tab) {
                viewPager.currentItem = tab.position
            }
            override fun onTabUnselected(tab: TabLayout.Tab) {

            }
            override fun onTabReselected(tab: TabLayout.Tab) {

            }
        }
    }

    override fun onActivityResult(requestCode: Int,resultCode: Int,data: Intent?) {
        super.onActivityResult(requestCode,resultCode,data)
        if (requestCode == 101 && data != null) {
            if (viewPager.currentItem == 0) {
                val customerListFragment = adapter.instantiateItem(
                    viewPager,viewPager.currentItem
                ) as CustomerListFragment

            } else if (viewPager.currentItem == 0) {
                val customerListFragment = adapter.instantiateItem(
                    viewPager,viewPager.currentItem
                ) as SupplierListFragment

            }
        }
    }

我已经用customerFragment或SupplierFragment创建了,替换您的片段。

本文链接:https://www.f2er.com/3155356.html

大家都在问