如何将片段加载到 Sliding TabLayout 中
How to load fragments into SlidingTabLayout
我正在根据自己的要求砍掉 SlidingTabsBasic
示例。我对选项卡式布局做的很少,所以不确定下一步该做什么。
我使用 SlidingTabLayout
创建了 3 个选项卡。我有一个要用于每个片段的片段,但我不知道如何将每个片段加载到选项卡中。 Google 中的示例仅使用选项卡 ID 更改文本标签以匹配选项卡 ID。
@Override
public Object instantiateItem(ViewGroup container, int position) {
// Inflate a new layout from our resources
View view = getActivity().getLayoutInflater().inflate(R.layout.pager_item,
container, false);
// Add the newly created View to the ViewPager
container.addView(view);
// Retrieve a TextView from the inflated View, and update it's text
TextView title = (TextView) view.findViewById(R.id.item_title);
title.setText(String.valueOf(position + 1));
// Return the View
return view;
}
如果需要,可以 post 所有代码,但不想重载 post。我也没有更改任何其他代码(来自下载的示例)
编辑:
这是我的适配器的代码,它正确地填充了标题,但似乎没有得到碎片(只是得到一个带有标签的白屏。已经创建了 Tab1.java
等,并为每个标签创建了一个布局.)
@Override
public int getCount() {
return NumbOfTabs;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new Tab1();
case 1:
return new Tab2();
case 2:
Tab3 tab3 = new Tab3();
return tab3;
}
return
@Override
public CharSequence getPageTitle(int position) {
return Titles[position].toUpperCase();
}
我认为简单的答案是您显示的代码片段需要在适配器内。底层机制是一个 ViewPager,当它连接到一个适配器时,将在需要它存在时在每个项目上调用此方法。我没有看过他们的例子,但它会协调每个 'page.'
的调用和处置
要使选项卡正常工作,您需要使用适配器设置。我相信 Google 代码确实有一个为您创建的适配器供您使用。
本质上,您创建一个新的 Java class 来扩展 FragmentStatePagerAdapter(取决于您的需要),然后将 getItem 方法设置为 return 每个选项卡所需的片段。
下面是一个可以帮助您实现目标的示例:
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
FirstFragment fragment1 = new FirstFragment();
return fragment1;
case 1:
SecondFragment fragment2 = new SecondFragment();
return fragment2;
default:
return null;
}
}
上面的代码可以让您 select 每个选项卡上需要哪些片段。如果您需要更多帮助,请告诉我
编辑:此外,更好的选项卡名称方法是覆盖适配器中的 getPageTitle class 和 return 您想要的字符串标题。
我正在根据自己的要求砍掉 SlidingTabsBasic
示例。我对选项卡式布局做的很少,所以不确定下一步该做什么。
我使用 SlidingTabLayout
创建了 3 个选项卡。我有一个要用于每个片段的片段,但我不知道如何将每个片段加载到选项卡中。 Google 中的示例仅使用选项卡 ID 更改文本标签以匹配选项卡 ID。
@Override
public Object instantiateItem(ViewGroup container, int position) {
// Inflate a new layout from our resources
View view = getActivity().getLayoutInflater().inflate(R.layout.pager_item,
container, false);
// Add the newly created View to the ViewPager
container.addView(view);
// Retrieve a TextView from the inflated View, and update it's text
TextView title = (TextView) view.findViewById(R.id.item_title);
title.setText(String.valueOf(position + 1));
// Return the View
return view;
}
如果需要,可以 post 所有代码,但不想重载 post。我也没有更改任何其他代码(来自下载的示例)
编辑:
这是我的适配器的代码,它正确地填充了标题,但似乎没有得到碎片(只是得到一个带有标签的白屏。已经创建了 Tab1.java
等,并为每个标签创建了一个布局.)
@Override
public int getCount() {
return NumbOfTabs;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new Tab1();
case 1:
return new Tab2();
case 2:
Tab3 tab3 = new Tab3();
return tab3;
}
return
@Override
public CharSequence getPageTitle(int position) {
return Titles[position].toUpperCase();
}
我认为简单的答案是您显示的代码片段需要在适配器内。底层机制是一个 ViewPager,当它连接到一个适配器时,将在需要它存在时在每个项目上调用此方法。我没有看过他们的例子,但它会协调每个 'page.'
的调用和处置要使选项卡正常工作,您需要使用适配器设置。我相信 Google 代码确实有一个为您创建的适配器供您使用。 本质上,您创建一个新的 Java class 来扩展 FragmentStatePagerAdapter(取决于您的需要),然后将 getItem 方法设置为 return 每个选项卡所需的片段。 下面是一个可以帮助您实现目标的示例:
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
FirstFragment fragment1 = new FirstFragment();
return fragment1;
case 1:
SecondFragment fragment2 = new SecondFragment();
return fragment2;
default:
return null;
}
}
上面的代码可以让您 select 每个选项卡上需要哪些片段。如果您需要更多帮助,请告诉我
编辑:此外,更好的选项卡名称方法是覆盖适配器中的 getPageTitle class 和 return 您想要的字符串标题。