在Android中滑动标签和AppCompatActiivty主题中出错

时间:2015-07-10 08:06:08

标签: android android-theme pagerslidingtabstrip android-tablayout

我正在使用 AppCompatActivity 和一些操作栏按钮,在我的应用的第一个活动中。

来自第二项活动我正在使用滑动标签

我的theme.xml(主题1)

<style name="CustomActionBarTheme" parent="Theme.AppCompat">

        <!-- theme customizations -->

        <item name="colorPrimary">@color/easy</item>
        <item name="colorAccent">@color/easy</item>


           <!-- Size Of Action bar-->
         <item name="actionBarSize">55dp</item>


    </style>

第一项活动工作正常。使用上面的主题但是

我的滑动标签页中的错误

 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.slidingtab}:
 java.lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. 
Do not request Window.FEATURE_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead.

我的theme.xml(主题2)

<style name="CustomActionBarTheme" parent="Theme.AppCompat">

</style>

<style name="MyTheme.NoActionBar">
    <!-- Both of these are needed -->
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

如果我使用上述主题,滑动选项卡页面工作正常,但我的第一个活动显示NPE。

问题:

1.i想要第一个活动的自定义主题,

2.我还需要在第二个活动中滑动标签

如何解决这个问题,请帮助我。

编辑:1

添加了Oncreate方法

My Sliding Tab Oncreate

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.find_stores_0_tabview__landing);

        // for ActionBar back button
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);


        // Initilization

        // Creating The Toolbar and setting it as the Toolbar for the activity

        toolbar = (Toolbar) findViewById(R.id.tool_bar);
        setSupportActionBar(toolbar);

        // Creating The ViewPagerAdapter and Passing Fragment Manager, Titles
        // fot the Tabs and Number Of Tabs.
        adapter = new ViewPagerAdapter(getSupportFragmentManager(), Titles,Numboftabs);

        // Assigning ViewPager View and setting the adapter
        pager = (ViewPager) findViewById(R.id.pager);
        pager.setAdapter(adapter);

        // Assiging the Sliding Tab Layout View
        tabs = (SlidingTabLayout) findViewById(R.id.tabs);
        tabs.setDistributeEvenly(true); // To make the Tabs Fixed set this true,
                                        // This makes the tabs Space Evenly in
                                        // Available width

        // Setting Custom Color for the Scroll bar indicator of the Tab View
        tabs.setCustomTabColorizer(new SlidingTabLayout.TabColorizer() {
            @Override
            public int getIndicatorColor(int position) {
                return getResources().getColor(R.color.tabsScrollColor);
            }
        });

        // Setting the ViewPager For the SlidingTabsLayout
        tabs.setViewPager(pager);



        // End OF OnCreate

    }

1 个答案:

答案 0 :(得分:1)

我建议你为他们定义不同的主题。

我觉得问题不是由Sliding TAB造成的, 再次检查您的代码。

你的第一个活动主题:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
</style>

你的第二个活动主题:

<style name="AppTheme2" parent="Theme.AppCompat.Light">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
</style>

在你的AndroidManifest.xml

<activity android:name=".first Activity" android:theme="@style/AppTheme"/>
<activity android:name=".second Activity" android:theme="@style/AppTheme2"/>