Android 如何在运行时使用片段动态设置操作栏中可切换选项卡的数量

Android 如何在运行时使用片段动态设置操作栏中可切换选项卡的数量,android,android-fragments,android-actionbar,android-viewpager,android-tabs,Android,Android Fragments,Android Actionbar,Android Viewpager,Android Tabs,我指的是这个。这对我来说很有效,但是如果我需要动态添加选项卡的数量,而不是预先分配选项卡的数量,该怎么办?例如,我的一些逻辑在数组中每次输出2个字符串,在数组中每次输出4个字符串。根据逻辑,我需要在运行时设置操作栏中的选项卡数量。我怎样才能做到这一点?有人能告诉我如何实现我所需要的吗?第一步: 定义选项卡SPAGERADAPTER,如下所示: public class TabsPagerAdapter extends FragmentPagerAdapter { private Arr

我指的是这个。这对我来说很有效,但是如果我需要动态添加选项卡的数量,而不是预先分配选项卡的数量,该怎么办?例如,我的一些逻辑在数组中每次输出2个字符串,在数组中每次输出4个字符串。根据逻辑,我需要在运行时设置操作栏中的选项卡数量。我怎样才能做到这一点?有人能告诉我如何实现我所需要的吗?

第一步:

定义
选项卡SPAGERADAPTER
,如下所示:

public class TabsPagerAdapter extends FragmentPagerAdapter {

    private ArrayList<Fragment> list;

    public TabsPagerAdapter(FragmentManager fm, ArrayList<Fragment> list) {
        super(fm);
        this.list = list;
    }

    @Override
    public Fragment getItem(int index) {
        return list.get(index);
    }

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

}
这:


试试这个。这将起作用。

适配器中
生成方法
添加选项卡
,类似于:

private final ArrayList<TabInfo> tabs = new ArrayList<TabInfo>();

public void addTab(String tabName, Class<?> clss, Bundle args)
{
   TabInfo info = new TabInfo(clss, tabName);
   tabs.add(info);
   notifyDataSetChanged();
}

... ...

static final class TabInfo
{
   private final Class<?> clss;
   private final String title;

   TabInfo(Class<?> _class, String _title)
   {
      clss = _class;
      title = _title;
   }
所有片段/选项卡都应通过
addTab
添加:

mAdapter.addTab(getResources().getString(R.string.tab_name), YourFragment.class, null);

MyFragment在for循环中代表什么?是我的主要活动片段还是其他什么?
MyFragment
ViewPager
持有的
framentt
类。。。在本例中,您链接了
查看页面
中的
片段
游戏片段
顶级片段
等。。。你能理解这个吗?根据扩展FragmentActivity类的示例,帮助我的ViewPager的片段是MainActivity。如果我在代码中用MainActivity代替MyFragment,则在newInstance()下会出现错误,表示没有为MainActivity定义newInstance()方法。我是一个新手,请你多给我讲讲。正如我所说,
MyFragment
ViewPager
中的
Fragment
,而
main activity
是存放
ViewPager
FragmentActivity
。。。您误解了这两种方法,只需创建一个类
MyFragment
,扩展
Fragment
,并在其中放置一个简单的测试布局,如
TextView
ImageView
,然后首先测试它。正常工作后,可以对
MyFragment
类进行更多自定义:)YourFragment.class代表什么?是我的MainActivity扩展了FragmentActivity还是其他什么?每个选项卡对应一个片段,对吗?因此,当您添加一个选项卡时,自然也会添加一个片段
TabsPagerAdapter adapter = new TabsPagerAdapter(fm, list);
private final ArrayList<TabInfo> tabs = new ArrayList<TabInfo>();

public void addTab(String tabName, Class<?> clss, Bundle args)
{
   TabInfo info = new TabInfo(clss, tabName);
   tabs.add(info);
   notifyDataSetChanged();
}

... ...

static final class TabInfo
{
   private final Class<?> clss;
   private final String title;

   TabInfo(Class<?> _class, String _title)
   {
      clss = _class;
      title = _title;
   }
@Override
public int getCount(){
   return tabs.size();
}
mAdapter.addTab(getResources().getString(R.string.tab_name), YourFragment.class, null);