Android 如何在运行时使用片段动态设置操作栏中可切换选项卡的数量
我指的是这个。这对我来说很有效,但是如果我需要动态添加选项卡的数量,而不是预先分配选项卡的数量,该怎么办?例如,我的一些逻辑在数组中每次输出2个字符串,在数组中每次输出4个字符串。根据逻辑,我需要在运行时设置操作栏中的选项卡数量。我怎样才能做到这一点?有人能告诉我如何实现我所需要的吗?第一步: 定义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
选项卡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);