创建的项目中或者有修改相关的配置文件,最容易出现这个问题,他的意思很简单就是你当前使用
报错: Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
at androidx.appcompat.app.AppCompatDelegateImpl.createSubDecor(AppCompatDelegateImpl.java:696)
at androidx.appcompat.app.AppCompatDelegateImpl.ensureSubDecor(AppCompatDelegateImpl.java:659)
at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:552)
at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161)
at com.data.hy.combination.component.CustomActionBarLayoutActivity.onCreate(CustomActionBarLayoutActivity.java:16)
在我们新创建的项目中或者有修改相关的配置文件,最容易出现这个问题,它的意思很简单就是你当前使用的皮肤theme不是我需要的,从错误可以看出她需要的皮肤是Theme.AppCompat;出现这个错误的原因是因为我们创建的activity有两个来源:一个是来自Android.app.actiivty的包;另一个是由于来源于v7jar包中的android.support.v7.app.AppCompatActivity包下,不同的包需要的皮肤也不同。
针对这种我们的解决办法也有两种如下:
方法一:将自己创建的activity直接继承与activity即可
方法二:修改清单文件中AndroidManifest.xml 中application中的theme,将其修改成需要的Theme.AppCompat即可
以上两种方法可以任选
package com.data.hy.combination.component;
import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
public class CustomActionBarLayoutActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); // 指定使用自定义标题
this.setContentView(R.layout.activity_custom_action_bar_layout);
// supportRequestWindowFeature(Window.FEATURE_CUSTOM_TITLE); // 指定使用自定义标题
// 放在该位置,报错 Caused by: android.util.AndroidRuntimeException: requestFeature() must be called before adding content
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.activity_my_layout_title_bar);
}
}
改为:
package com.data.hy.combination.component;
import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
import androidx.annotation.Nullable;
public class CustomActionBarLayoutActivity extends Activity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); // 指定使用自定义标题
this.setContentView(R.layout.activity_custom_action_bar_layout);
// supportRequestWindowFeature(Window.FEATURE_CUSTOM_TITLE); // 指定使用自定义标题
// 放在该位置,报错 Caused by: android.util.AndroidRuntimeException: requestFeature() must be called before adding content
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.activity_my_layout_title_bar);
}
}
AndroidManifest.xml 配置如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.data.hy.combination.component">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.AppCompat">
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="21xq8w6f8yS6kmvzLxM8MeB0c1k0TXIX"/>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".TabNavigationActivity"/>
<activity android:name=".TextViewTransformationActivity"/>
<activity android:name=".TextNinePatchDrawableActivity"/>
<activity android:name=".BaiDuNavigationQXDrawableActivity"/>
<activity android:name=".BaiDuMapBusRouteQueryActivity"/>
<activity android:name=".BaiDuMapWalkingRouteQueryActivity"/>
<activity android:name=".BaiDuMapPointOfInterestActivity"/>
<activity android:name=".BaiDuMapLocationQueryActivity"/>
<activity android:name=".BaiDuMapLocationQueryAssistantActivity"/>
<activity android:name=".UseActionProviderMenuActivity"/>
<activity android:name=".TabHostHorizontalActivity"/>
<activity android:name=".TabHostLayoutHorizontalActivity"/>
<activity android:name=".TextViewUpContentDownPictureActivity"/>
<activity android:name=".GLRendererActivity"/>
<activity android:name=".DynamicSetCurrentApplicationActionBarTitleActivity" android:theme="@style/AppTheme"/>
<activity android:name=".CustomActionBarLayoutActivity" android:theme="@style/myTheme"/>
<!-- ATTENTION: This was auto-generated to add Google Play services to your project for
App Indexing. See https://g.co/AppIndexing/AndroidStudio for more information. -->
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version"/>
</application>
<!--开启使用互联网的权限-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.GET_TASKS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_SETTINGS"
tools:ignore="ProtectedPermissions" />
</manifest>