【发布时间】:2016-02-22 12:03:28
【问题描述】:
当我运行我的活动时,我会随机收到一个IllegalStateException: You need to use a Theme.AppCompat theme。我只需要重建项目并在下一次运行时开始活动,但经过一些运行后,我再次遇到异常。
我检查了我的应用程序和活动主题是否继承自 Theme.AppCompat。我所有的活动都延伸到FragmentActivity
我在 API 22 (Android 5.1.1) 上遇到异常,我正在运行 Android Studio 2.0 Beta 5
编辑
我使用的是 Android Studio 1.5,但没有收到错误消息。似乎在 AS 2.0 上,我的活动中的super 指的是AppCompatActivity,而不是继承的类FragmentActivity。我无法理解这种行为
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="eu.heyway.heywayandroid">
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/Theme.AppCompat.NoActionBar"
android:name=".HeyWayApplication">
<activity
android:name=".login.FacebookLoginActivity"
android:theme="@style/AppTheme.TriangleBackground">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".configuration.ConfigurationActivity"
android:label="@string/title_activity_configuration"
android:theme="@style/AppTheme.TriangleBackground" />
<activity android:name=".home.HomeActivity"
android:theme="@style/AppTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
styles.xml
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:windowBackground">@color/colorPrimary</item>
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
</style>
<style name="AppTheme.TriangleBackground" parent="AppTheme">
<item name="android:windowBackground">@drawable/background_full</item>
</style>
我所有的活动都扩展了这个类:
public class BaseActivity extends FragmentActivity {
@Override
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase));
}
}
我想知道是否应该将此报告为错误或我做错了什么。
【问题讨论】:
-
“我的所有活动都扩展了 FragmentActivity”——要么将它们更改为扩展
AppCompatActivity,要么停止使用Theme.AppCompat。Theme.AppCompat供AppCompatActivity使用,而不是FragmentActivity或Activity。 -
FragmentActivity 和 Theme.AppCompat -- 导致问题。我在这里第二个 CommonsWare 解决方案。
-
我在使用 AppCompatActivity 时遇到了同样的问题。其实我在看到问题后从 AppCompatActivity 改变了
-
另外,当我更改清单中的某些内容时,下次启动时不会显示该错误。我想知道 Android Studio 的新快速构建功能是否对此不负责。
标签: android android-studio android-manifest android-theme android-studio-2.0-beta5