android - 如何动态创建 fragment 寻呼机适配器

标签 android android-fragments fragmentpageradapter

我无法为每个选项卡创建动态布局,我可以通过此构造函数动态创建选项卡(public MyPagerAdapter(FragmentManager fm,int noOfTabs)),但无法为每个 fragment 创建的每个选项卡膨胀 View 这应该是动态的。

public class MyPagerAdapter extends FragmentPagerAdapter 
{

        private final String[] TITLES = { "Categories", "Home", "Top Paid", "Top Free", "Top Grossing", "Top New Paid",
                "Top New Free", "Trending" };

        int noOfTabs;

        **public MyPagerAdapter(FragmentManager fm , int noOfTabs) 
        {           
            super(fm);
            this.noOfTabs = noOfTabs;
        }**

        /*public MyPagerAdapter(FragmentManager fm) 
        {
            super(fm);
        }*/

        @Override
        public CharSequence getPageTitle(int position) {
            return TITLES[position];
        }

        @Override
        public int getCount() {
            return noOfTabs; //TITLES.length;
        }

        @Override
        public Fragment getItem(int position) {
            return SuperAwesomeCardFragment.newInstance(position);
        }

    }

我在这里遇到的问题应该是动态的而不是静态的三个 fragment (FragmentA、FragmentB、FragmentC),它可以是任意数量的 fragment ,具体取决于 int noOfTabs:

@Override
public Fragment getItem(int position) {
    Fragment fragment =null;
    switch (position) {
        case 0:
            fragment = new FragmentA();
            break;
        case 1:
            fragment = new FragmentB();
            break;              
        case 2:
            fragment = new FragmentC();
            break;          }
    return fragment;    
}

如果有人可以帮助我,请提前致谢,因为我在库 PagerSlidingTabStrip 的帮助下使用它。

最佳答案

@nbokmans 解决方案可能没问题,但我已经使用了一个容器来完成它。

创建一个带有 FrameLayout 的简单主机 fragment 并通过替换 fragment 对我来说是一个很好的动态解决方案。

使用 Otto EventBus 让它变得很棒,因为它可以从任何地方通过简单的 post 进行更改

  @Subscribe
fun changeFragment(type: FragmentTypeEvent){
    val ft = activity.supportFragmentManager.beginTransaction()
    val frag = getFragment(type)
    ft.replace(R.id.container_frame,frag)
    ft.commit()
}

关于android - 如何动态创建 fragment 寻呼机适配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32858941/

相关文章:

java - 打开自定义相机,拍照,保存图片,发送图片

android - Robolectric:如何测试包含 SherlockFragment 的 Activity ?

android - 如何动态更新 View 寻呼机项目标题

java - 如何在使用具有不同 fragment/布局的 View 寻呼机时传递 fragment 参数?

Android 主要 Activity 崩溃 - 致命异常 : main

android - 任务 :appprocessDebugManifest. 执行失败 list 合并失败。有关更多信息,请参见控制台

java - 将 ImageView 保存到 Gallery - 代码不工作

android - getFragmentManager() 无法在自定义对话框上解析

android - FragmentTabHost TabWidget tabStrip 无法自定义

java - Android 在 FragmentPagerAdapter 中更改 fragment 顺序