EGH*_*HDK 6 java android actionbarsherlock android-actionbar
我正在使用Google的新工具来启动一个能够在三个标签之间切换的应用程序.

这很好,但缺乏对旧设备的支持.
1.我在应用程序中添加了带有支持库的ABS.
2.我改变了public class MainActivity extends FragmentActivity implements ActionBar.TabListener {对public class MainActivity extends SherlockFragmentActivity implements ActionBar.TabListener {
3.我仍然有很多错误,我甚至不知道这是否能在旧设备上正常工作.有没有人有关于如何实现与2.x及更高版本兼容的滑动标签的任何提示?

我被困在alextsc答案的第6步

小智 15
我试过这个向导一次,当我用ActionBarSherlock实现这个确切的模式时,我认为我完全丢弃了生成的代码,所以我建议你从头开始一个正常的"空白"活动.这是一个小步骤指南.并非所有步骤都已完整描述,但您应该找到足够的关键字文档来开始.
1)将ActionBarSherlock添加到您的项目中(显然)
2)创建一个扩展SherlockFragmentActivity并设置正确的abs主题的新活动
此时,您应该有一个带有操作栏的空白活动.
3)更改布局并包含填充视口的ViewPager
4)写下您的片段(或现在的占位符)和ViewPager的适配器,将它们连接在一起
有很多教程可以解释这里所有必要的内容,例如这篇博客文章.
这应该为您提供一个带有操作栏和可切换布局的活动.您现在可以在片段之间滑动.
5)添加操作栏选项卡并将空白选项卡侦听器附加到它们
例:
actionBar = getSupportActionBar();
sampleTab = actionBar.newTab()
.setText(R.string.title)
.setTag(TABTAG_SAMPLE)
.setTabListener(tabListener);
actionBar.addTab(sampleTab);
Run Code Online (Sandbox Code Playgroud)
确保为每个选项卡指定一个单独的标记(字符串const很好).这将用于识别在一秒钟内单击哪个选项卡.还要确保将创建的选项卡实例保留在类变量中.你以后会需要它们.为每个选项卡重复上面的代码段.您可以使用普通的TabListener,但我建议使用SimpleTabListener,因为您以后只需要覆盖一个方法.
现在,您应该使用操作栏,可滑动片段和(非功能)选项卡进行活动.
6)填充选项卡侦听器并将其连接到viewpager
private SimpleTabListener tabListener = new SimpleTabListener() {
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
final String tag = (String) tab.getTag();
if (TABTAG_SAMPLE.equals(tag)) {
viewPager.setCurrentItem(INDEX_SAMPLE);
} else if (TABTAG_SECONDTAB.equals(tag)) {
viewPager.setCurrentItem(INDEX_SECONDFRAGMENT);
}
}
};
Run Code Online (Sandbox Code Playgroud)
这应该是直截了当的.您侦听选项卡选择事件,检查通过已保存标记选择的选项卡setCurrentItem(),并使用与某个选项卡关联的片段的索引调用viewpagers 方法.
现在,您应该可以通过选项卡选择片段以及向左滑动.您会注意到,滑动到某个片段不会相应地同步标签,它们也不会被正确选择.
7)将OnPageChangeListener附加到ViewPager并相应地选择选项卡
同样,您也可以在此处使用SimpleOnPageChangeListener而不是接口.简短的例子:
private SimpleOnPageChangeListener onPageChangeListener
= new SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
switch (position) {
case INDEX_SAMPLE:
actionBar.selectTab(sampleTab);
break;
case INDEX_SECONDFRAGMENT:
actionBar.selectTab(secondTab);
break;
}
};
};
Run Code Online (Sandbox Code Playgroud)
这也应该是不言自明的.您会看到一个滑动操作,它会更改显示的片段,检查它的索引并选择相应的选项卡.您在此处看到为什么必须保留第5步中的选项卡实例,您需要它们来选择选项卡.
现在一切都应该有效.
| 归档时间: |
|
| 查看次数: |
10701 次 |
| 最近记录: |