나는 안드로이드 2.3.5에서의 RuntimeException을 얻고있다하지만 난 하고 Theme.AppCompat (고해상도 / 값 / themes.xml)를 사용하여. 이것은 전화입니다 : http://www.gsmarena.com/samsung_galaxy_y_s5360-4117.php
<!-- res/values/themes.xml -->
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme.Styled" parent="@style/Theme.AppCompat">
<item name="actionBarStyle">@style/QueryActionBar</item>
<item name="android:actionBarStyle">@style/QueryActionBar</item>
</style>
<style name="QueryActionBar" parent="@style/Widget.AppCompat.ActionBar">
<item name="background">@color/blueback</item>
<item name="android:background">@color/blueback</item>
<item name="backgroundSplit">@color/blueback</item>
<item name="android:backgroundSplit">@color/blueback</item>
</style>
</resources>
다음은 values-v11에 대한 파일입니다.
<!-- res/values-v11/themes.xml -->
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="QueryTheme" parent="@android:style/Theme.Holo">
<!-- Any customizations for your app running on devices with Theme.Holo here -->
</style>
</resources>
여기에 오류가 있습니다.
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.txt2lrn.www/com.txt2lrn.www.LandingActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
at android.app.ActivityThread.access$1500(ActivityThread.java:117)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3687)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
at android.support.v7.app.ActionBarActivityDelegate.onCreate(ActionBarActivityDelegate.java:102)
at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:98)
at com.txt2lrn.www.LandingActivity.onCreate(LandingActivity.java:95)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
... 11 more
죄송합니다. AndroidManifest.xml에 android : theme = “@ style / Theme.Styled”도 정의되어 있습니다.
답변
MainActivity에서 ActionBarActivity를 확장하는 경우 values-v11에서도 상위 테마를 변경해야합니다.
따라서 values-v11의 style.xml은 다음과 같습니다.
<!-- res/values-v11/themes.xml -->
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="QueryTheme" parent="@style/Theme.AppCompat">
<!-- Any customizations for your app running on devices with Theme.Holo here -->
</style>
</resources>
편집 : ActionBar 사용을 중지하고 Android 디자인 지원 라이브러리에 포함 된 AppBar 레이아웃을 사용하는 것이 좋습니다.
답변
ActionBar Compat를 추가하려면 활동 또는 애플리케이션이 다음과 같이 AndroidManifest.xml에서 @ style / Theme.AppCompat 테마를 사용해야합니다.
<activity
...
android:theme="@style/Theme.AppCompat" />
그러면 활동에 액션 바가 추가됩니다 (또는이 테마를 애플리케이션에 추가 한 경우 모든 활동).
그러나 일반적으로 작업 표시 줄을 사용자 정의해야합니다. 이렇게하려면 “@ style / Theme.AppCompat.Light”와 같이 Theme.AppCompat 부모를 사용하여 두 가지 스타일을 만들어야합니다. 첫 번째는 api 11> = (안드로이드 액션 바에 빌드 된 안드로이드 버전), 두 번째는 api 7-10 (액션 바에 빌드 없음)을위한 것입니다.
첫 번째 스타일을 살펴 보겠습니다. 그것은에 위치 할 고해상도 / 값-V11 / styles.xml . 다음과 같이 표시됩니다.
<style name="Theme.Styled" parent="@style/Theme.AppCompat.Light">
<!-- Setting values in the android namespace affects API levels 11+ -->
<item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item>
</style>
<style name="Widget.Styled.ActionBar" parent="@style/Widget.AppCompat.Light.ActionBar">
<!-- Setting values in the android namespace affects API levels 11+ -->
<item name="android:background">@drawable/ab_custom_solid_styled</item>
<item name="android:backgroundStacked"
>@drawable/ab_custom_stacked_solid_styled</item>
<item name="android:backgroundSplit"
>@drawable/ab_custom_bottom_solid_styled</item>
</style>
그리고 api 7-10에 대해 동일한 스타일이 필요합니다. 그것은에 위치 할 고해상도 / 값 / styles.xml 하지만 API 수준이 아직 원래의 안드로이드 액션 바 스타일의 항목에 대해 알고하지 않기 때문에, 우리는 지원 라이브러리에서 제공되는 선택 사항 중 하나를 사용해야합니다. ActionBar Compat 항목은 원래 Android처럼 정의되지만 앞에 “android :”부분이 없습니다.
<style name="Theme.Styled" parent="@style/Theme.AppCompat.Light">
<!-- Setting values in the default namespace affects API levels 7-11 -->
<item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>
</style>
<style name="Widget.Styled.ActionBar" parent="@style/Widget.AppCompat.Light.ActionBar">
<!-- Setting values in the default namespace affects API levels 7-11 -->
<item name="background">@drawable/ab_custom_solid_styled</item>
<item name="backgroundStacked">@drawable/ab_custom_stacked_solid_styled</item>
<item name="backgroundSplit">@drawable/ab_custom_bottom_solid_styled</item>
</style>
10보다 높은 API 레벨에 이미 액션 바가 있더라도 AppCompat 스타일을 사용해야한다는 점을 표시하십시오. 그렇지 않으면 Android 3.0 이상이 설치된 기기에서 Acitvity를 시작할 때 다음 오류가 발생합니다.
java.lang.IllegalStateException :이 활동에 Theme.AppCompat 테마 (또는 하위 항목)를 사용해야합니다.
다음은 Chris Banes가 작성한 이 원본 기사 http://android-developers.blogspot.com/2013/08/actionbarcompat-and-io-2013-app-source.html 링크 입니다.
추신 : 내 영어 죄송합니다
답변
theme.styled를 참조하고 AppCompat 테마를 사용하지 않는 다른 값 폴더가 없는지 확인하고 확인하십시오.
즉 values-v11
폴더
답변
이 시도…
styles.xml
<resources>
<style name="Theme.AppCompat.Light.NoActionBar" parent="@style/Theme.AppCompat.Light">
<item name="android:windowNoTitle">true</item>
</style>
</resources>
AndroidManifest.xml
<activity
android:name="com.example.Home"
android:label="@string/app_name"
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
답변
귀하의 Activity
확장 ActionBarActivity
이 AppCompat.theme
적용 되어야합니다 . 에서 변경 ActionBarActivity
을 Activity
하거나 FragmentActivity
이 문제를 해결합니다.
답변
빌드-> 프로젝트 정리를 수행하십시오. 나는 이것이 당신의 문제를 해결할 것이라고 생각합니다.
답변
내 매니페스트가 테마를 참조하지 않습니다 … AFAIK가 필요하지 않습니다.
물론입니다. Theme.Styled
활동 에 마법처럼 적용 되는 것은 없습니다 . 활동 또는 전체 애플리케이션이를 사용 Theme.Styled
하고 있음을 선언해야합니다 . 예 :
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/Theme.Styled">