2015-09-01 29 views
0

我想使用ActionBar,我检查了一些postes,并且我编写了下面的代码,但在运行时我收到下面的logCat输出。我知道这是关于应用程序的主题,我试图设置一个新的主题,如下面的代码所示,但它也不起作用。如何设置一个主题使用ActionBar

请让我们现在如何解决它。

代码

private void initActionBar() { 
    // TODO Auto-generated method stub 
    //setTheme(android.R.style.Theme_Holo); 
    getSupportActionBar().setTitle(R.string.action_discover_title); 
} 

style.xml

<resources> 
<!-- 
    Base application theme, dependent on API level. This theme is replaced 
    by AppBaseTheme from res/values-vXX/styles.xml on newer devices. 
--> 
<style name="AppBaseTheme" parent="android:Theme.Light"> 
    <!-- 
     Theme customizations available in newer API levels can go in 
     res/values-vXX/styles.xml, while customizations related to 
     backward-compatibility can go here. 
    --> 
</style> 

<!-- Application theme. --> 
<style name="AppTheme" parent="AppBaseTheme"> 
    <!-- All customizations that are NOT specific to a particular API-level can go here. --> 
</style> 
</resources> 

logcat的

09-01 17:35:46.237: E/AndroidRuntime(19987): FATAL EXCEPTION: main 
09-01 17:35:46.237: E/AndroidRuntime(19987): Process: com.example.ble_00, PID: 19987 
09-01 17:35:46.237: E/AndroidRuntime(19987): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.ble_00/com.example.ble_00.MainActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. 
09-01 17:35:46.237: E/AndroidRuntime(19987): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2689) 
09-01 17:35:46.237: E/AndroidRuntime(19987): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2754) 
09-01 17:35:46.237: E/AndroidRuntime(19987): at android.app.ActivityThread.access$900(ActivityThread.java:177) 
09-01 17:35:46.237: E/AndroidRuntime(19987): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1448) 
09-01 17:35:46.237: E/AndroidRuntime(19987): at android.os.Handler.dispatchMessage(Handler.java:102) 

回答

1

因为你需要一个ppcompat主题使用ActionBar。将parent="android:Theme.Light"更改为任何Appcompat主题作为您的外观和感觉首选项。 如:

<style name="AppBaseTheme" parent="Theme.AppCompat.Light"> 
    <!-- 
     can override the default look and feel of the parent theme 
    --> 
</style> 

您可以查看更多样式的ActionBar here

并在您要使用Appcomapt的活动中使用该主题。您可以在AndroidManifest.xml文件

<activity 
     android:name="com.YourActivity" 
     android:label="@string/label" 
     android:theme="@style/AppBaseTheme"/> 
1

指定它这样的:

<style name="AppBaseTheme" parent="android:Theme.Light"> 
    <!-- 
     Theme customizations available in newer API levels can go in 
     res/values-vXX/styles.xml, while customizations related to 
     backward-compatibility can go here. 
    --> 
</style> 

应该是:

<style name="AppBaseTheme" parent="Theme.AppCompat.Light"> 
    <!-- 
     Theme customizations available in newer API levels can go in 
     res/values-vXX/styles.xml, while customizations related to 
     backward-compatibility can go here. 
    --> 
</style> 
相关问题