Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android PagerSlidingTastrip(com.astuetz.PagerSlidingTastrip)如何在运行时动态添加选项卡?_Android_Android Fragments_Android Studio_Android Viewpager_Pagerslidingtabstrip - Fatal编程技术网

Android PagerSlidingTastrip(com.astuetz.PagerSlidingTastrip)如何在运行时动态添加选项卡?

Android PagerSlidingTastrip(com.astuetz.PagerSlidingTastrip)如何在运行时动态添加选项卡?,android,android-fragments,android-studio,android-viewpager,pagerslidingtabstrip,Android,Android Fragments,Android Studio,Android Viewpager,Pagerslidingtabstrip,我在应用程序中使用com.astuetz.PagerSlidingTabStrip来呈现应用程序中的几个选项卡。我的要求是,当用户单击某个内容时,或者滑动到选项卡的最后一个右端时,我需要添加更多选项卡。我查看了几乎所有的stackoverflow线程,但找不到任何适当的帮助 下面是我正在做的工作-布局文件(XML): 片段: public class MandiEntryAddTabFragment extends BaseFragment { private ViewPager v

我在应用程序中使用
com.astuetz.PagerSlidingTabStrip
来呈现应用程序中的几个选项卡。我的要求是,当用户单击某个内容时,或者滑动到选项卡的最后一个右端时,我需要添加更多选项卡。我查看了几乎所有的stackoverflow线程,但找不到任何适当的帮助

下面是我正在做的工作-布局文件(XML):


片段:

public class MandiEntryAddTabFragment extends BaseFragment {
    private ViewPager viewPager;
    private View view;
    private PagerSlidingTabStrip mTabs;
    private MyFragmentPagerAdapter mAdapter;



    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        if (view == null) {
            view = inflater.inflate(R.layout.fragment_mandi_add, container, false);

            if (viewPager == null) {
                viewPager = (ViewPager)view.findViewById(R.id.pager);
            }
            getBaseActivity().setTitle("Material Entry");
            FragmentManager manager = getChildFragmentManager();
            viewPager.setAdapter(mAdapter = new   MyFragmentPagerAdapter(manager));
            mTabs = (PagerSlidingTabStrip) view.findViewById(R.id.tabs);
            mTabs.setViewPager(viewPager);
        }
        return view;

    }

    class MyFragmentPagerAdapter extends FragmentPagerAdapter {

        public MyFragmentPagerAdapter(FragmentManager fm) {
            super(fm);
        }
        private ArrayList<String> tabs = new ArrayList<>();

        @Override
        public Fragment getItem(int item) {
            Fragment fragment = null;

            if (item == 0) {
                fragment = new MandiEntryFragment();
            } else if (item == 1) {
                fragment = new MandiEntryFarmerFragment();
            } else if (item == 2) {
                fragment = new MandiEntryFarmerFragment();
            } else if (item == 3) {
                fragment = new MandiEntryFarmerFragment();
            } else if (item == 4) {
                fragment = new MandiEntryFarmerFragment();
            }/* else if (item == 5) {
                fragment = new MandiEntryFarmerFragment();
                new MyFragmentPagerAdapter(getChildFragmentManager()).addTab("test " + (mAdapter.getCount() + 1));
            }*/
            return fragment;
        }

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

        @Override
        public CharSequence getPageTitle(int position) {
            String title = new String();
            if (position == 0) {
                title = "Entry";
            } else if (position == 1) {
                title = "Farmer 1";
            } else if (position == 2) {
                title = "Farmer 2";
            } else if (position == 3) {
                title = "Farmer 3";
            } else if (position == 4) {
                title = "Farmer 4";
                tabs.get(position);
            } /*else if (position == 5) {
                title = "Add";

                public CharSequence getPageTitle(int position) { return   tabs.get(position);
                }

            }*/
            return title;
        }

        public void addTab(String tab) {
            tabs.add(tab);
            notifyDataSetChanged();
            mTabs.notifyDataSetChanged();
        }

    }


    @Override
    public void fetchAndShowData() {
        Fragment fragment = getActiveFragment(viewPager);
        if (fragment != null) {
            ((BaseFragment) fragment).fetchAndShowData();
        }
    }
}
公共类MandinEntryAddTabFragment扩展了BaseFragment{
私人视页机视页机;
私人视野;
私人寻呼机SlidingAbstrip MTAB;
私人MyFragmentPagerAdapter mAdapter;
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
如果(视图==null){
视图=充气机。充气(R.layout.fragment\u mandi\u add,container,false);
if(viewPager==null){
viewPager=(viewPager)view.findViewById(R.id.pager);
}
getBaseActivity().setTitle(“物料输入”);
FragmentManager=getChildFragmentManager();
setAdapter(mAdapter=newMyFragmentPageRadapter(管理器));
mTabs=(PagerSlidingTabStrip)view.findViewById(R.id.tabs);
mTabs.setViewPager(viewPager);
}
返回视图;
}
类MyFragmentPagerAdapter扩展了FragmentPagerAdapter{
公共MyFragmentPagerAdapter(FragmentManager fm){
超级(fm);
}
私有ArrayList选项卡=新建ArrayList();
@凌驾
公共片段getItem(int项){
片段=空;
如果(项==0){
片段=新的下颌片段();
}否则,如果(项目==1){
片段=新的下颌FarmerFragment();
}否则,如果(项目==2){
片段=新的下颌FarmerFragment();
}否则,如果(项目==3){
片段=新的下颌FarmerFragment();
}否则,如果(项目==4){
片段=新的下颌FarmerFragment();
}/*否则,如果(项目==5){
片段=新的下颌FarmerFragment();
新建MyFragmentPagerAdapter(getChildFragmentManager()).addTab(“测试”+(mAdapter.getCount()+1));
}*/
返回片段;
}
@凌驾
public int getCount(){
返回tabs.size();
}
@凌驾
公共字符序列getPageTitle(int位置){
字符串标题=新字符串();
如果(位置==0){
title=“条目”;
}否则如果(位置==1){
title=“农民1”;
}否则如果(位置==2){
title=“农民2”;
}否则如果(位置==3){
title=“农民3”;
}否则如果(位置==4){
title=“农民4”;
tabs.get(位置);
}/*否则如果(位置==5){
title=“添加”;
公共字符序列getPageTitle(int位置){返回tabs.get(位置);
}
}*/
返回标题;
}
公共无效添加选项卡(字符串选项卡){
选项卡。添加(选项卡);
notifyDataSetChanged();
mTabs.notifyDataSetChanged();
}
}
@凌驾
public void fetchAndShowData(){
Fragment Fragment=getActiveFragment(viewPager);
if(片段!=null){
((BaseFragment)fragment.fetchAndShowData();
}
}
}
我得到的错误是:

E/AndroidRuntime:java.lang.RuntimeException:无法启动活动 ComponentInfo{c2c.cloud4things.com/com.cloud4things.c2c.CommunityHomeActivity}: java.lang.IndexOutOfBoundsException:索引4无效,大小为0

同样在上述片段的
getPageTitle
onCreateView
函数中。 我可以理解
getCount
方法存在一些问题。但我不知道怎么做。请帮助我。线索是赞赏的。提前谢谢

public class MandiEntryAddTabFragment extends BaseFragment {
    private ViewPager viewPager;
    private View view;
    private PagerSlidingTabStrip mTabs;
    private MyFragmentPagerAdapter mAdapter;



    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        if (view == null) {
            view = inflater.inflate(R.layout.fragment_mandi_add, container, false);

            if (viewPager == null) {
                viewPager = (ViewPager)view.findViewById(R.id.pager);
            }
            getBaseActivity().setTitle("Material Entry");
            FragmentManager manager = getChildFragmentManager();
            viewPager.setAdapter(mAdapter = new   MyFragmentPagerAdapter(manager));
            mTabs = (PagerSlidingTabStrip) view.findViewById(R.id.tabs);
            mTabs.setViewPager(viewPager);
        }
        return view;

    }

    class MyFragmentPagerAdapter extends FragmentPagerAdapter {

        public MyFragmentPagerAdapter(FragmentManager fm) {
            super(fm);
        }
        private ArrayList<String> tabs = new ArrayList<>();

        @Override
        public Fragment getItem(int item) {
            Fragment fragment = null;

            if (item == 0) {
                fragment = new MandiEntryFragment();
            } else if (item == 1) {
                fragment = new MandiEntryFarmerFragment();
            } else if (item == 2) {
                fragment = new MandiEntryFarmerFragment();
            } else if (item == 3) {
                fragment = new MandiEntryFarmerFragment();
            } else if (item == 4) {
                fragment = new MandiEntryFarmerFragment();
            }/* else if (item == 5) {
                fragment = new MandiEntryFarmerFragment();
                new MyFragmentPagerAdapter(getChildFragmentManager()).addTab("test " + (mAdapter.getCount() + 1));
            }*/
            return fragment;
        }

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

        @Override
        public CharSequence getPageTitle(int position) {
            String title = new String();
            if (position == 0) {
                title = "Entry";
            } else if (position == 1) {
                title = "Farmer 1";
            } else if (position == 2) {
                title = "Farmer 2";
            } else if (position == 3) {
                title = "Farmer 3";
            } else if (position == 4) {
                title = "Farmer 4";
                tabs.get(position);
            } /*else if (position == 5) {
                title = "Add";

                public CharSequence getPageTitle(int position) { return   tabs.get(position);
                }

            }*/
            return title;
        }

        public void addTab(String tab) {
            tabs.add(tab);
            notifyDataSetChanged();
            mTabs.notifyDataSetChanged();
        }

    }


    @Override
    public void fetchAndShowData() {
        Fragment fragment = getActiveFragment(viewPager);
        if (fragment != null) {
            ((BaseFragment) fragment).fetchAndShowData();
        }
    }
}