我正在使用名为EffectiveNavigation的google示例来创建带有标签的ViewPager。问题是在清单中,对于我的主要活动,我已经设置了
android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen"
这样我的应用就没有actionBar了。因此我在
获得了NullPointerExceptionfinal ActionBar actionBar = getActionBar();//null from getActionBar()
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);//NullPointerException
现在,我想要的是能够创建一个带有标签的简单ViewPager。就是这样。没什么大不了的。我正在使用谷歌的例子,因为它是我发现的。 基本上在谷歌示例中,他们使用statusBar来保存标签。我怎么能拿着标签?关于如何修改护目镜示例的任何不好的例子或说明都不会有太大帮助,因为我对ViewPagers了解不多。谷歌示例的链接是http://developer.android.com/training/implementing-navigation/lateral.html
statusBar的简单解决方法可能就足够了。
答案 0 :(得分:2)
使用ActionBar来保存选项卡实际上已被弃用,因为即使您的应用确实有操作栏,也可能导致NullPointerException。好消息是Design包中的TabLayout为您提供了使用选项卡轻松创建ViewPager的可能性。只需在您的Activity(或片段)的XML中写下这个:
<android.support.v4.view.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<android.support.design.widget.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="top" />
</android.support.v4.view.ViewPager>
一旦你有适用于ViewPager的适配器,在setContentView方法之后将此代码包含在Activity(或Fragment)的onCreate方法中:
ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
viewPager.setAdapter(new MyPagerAdapter(getSupportFragmentManager()));
TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);
tabLayout.setupWithViewPager(viewPager);
希望它有所帮助;)
答案 1 :(得分:0)
我找到了解决办法。基本上在onCreate
,setContentView
之前,我打电话给
requestWindowFeature(Window.FEATURE_ACTION_BAR);
然后一切正常。
答案 2 :(得分:0)
对于到达此处的任何人发现@ learner的解决方案对他们不起作用,请查看http://thepseudocoder.wordpress.com/2011/10/13/android-tabs-viewpager-swipe-able-tabs-ftw/