当我在操作栏中进行任何更改时,android 中的应用程序正在关闭
Application in android is closing when I do any change in the actionbar
这是清单:
<application
android:allowBackup="true"
android:icon="@drawable/professor"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
这是风格:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="@android:style/Theme.Holo.Light">
<item name="android:actionBarStyle">@style/MyActionBar</item>
</style>
<style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
<item name="android:background">#DC980005</item>
</style>
当我更改背景颜色时,应用程序崩溃并关闭!
我在互联网上搜索了很多,但没有理由无法打开应用程序!
请任何帮助..
这是 logCat :
01-24 16:52:47.951 28973-28973/com.example.user.ascs E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.user.ascs, PID: 28973
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.user.ascs/com.example.user.ascs.MainActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2305)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363)
at android.app.ActivityThread.access0(ActivityThread.java:161)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1265)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5356)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
at dalvik.system.NativeStart.main(Native Method)
Why the android studio is forcing me to use this?
Android工作室不是"forcing"你随便做的
我的猜测是您在 Android Studio 中创建了一个新项目,并在其中创建了一个新的 activity。此类项目的模板将项目设置为使用 appcompat-v7
及其 ActionBarActivity
、Theme.AppCompat
等。这为您提供了一个可以返回到 API 级别 7 的操作栏,而本机操作栏仅适用于 API 级别 11。并且 appcompat-v7
操作栏类似于 Material 设计操作栏,它是 Android 5.0 的原生设计。
您不必使用任何这些。它只是从模板中提供给您的内容。如果您不喜欢模板中的内容,则需要更改从模板中为您生成的文件。这与模板在任何其他工具中的工作方式没有什么不同,无论是开发工具(例如,网站生成器)还是办公生产力工具(例如,Microsoft Word)。
在此特定情况下,欢迎您:
从 build.gradle
文件的 dependencies
中删除 appcompat-v7
行。在典型的 Android Studio 项目中,该文件将是 app/
模块目录中的文件。
将您的 activity 更改为继承自 Activity
而不是 ActionBarActivity
。
将主题更改为不使用 Theme.AppCompat
。
更改您的菜单资源(app/src/main/res/menu/*
在典型的 Android Studio 项目中)以将任何 app:
前缀替换为 android:
前缀(例如, app:showAsAction
变为 android:showAsAction
).
那么,您将不再使用 appcompat-v7
。您将在 API 级别 11+ 上使用本机操作栏,如果您的 minSdkVersion
级别低于 11,则返回到旧式选项菜单。您将能够让您的主题继承自一个Theme.Holo
系列的,对于 Android 5.0+ 设备(例如,在 res/values-v21/styles.xml
文件中)可选择继承 Theme.Material
。
这是清单:
<application
android:allowBackup="true"
android:icon="@drawable/professor"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
这是风格:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="@android:style/Theme.Holo.Light">
<item name="android:actionBarStyle">@style/MyActionBar</item>
</style>
<style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
<item name="android:background">#DC980005</item>
</style>
当我更改背景颜色时,应用程序崩溃并关闭! 我在互联网上搜索了很多,但没有理由无法打开应用程序! 请任何帮助..
这是 logCat :
01-24 16:52:47.951 28973-28973/com.example.user.ascs E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.user.ascs, PID: 28973
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.user.ascs/com.example.user.ascs.MainActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2305)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363)
at android.app.ActivityThread.access0(ActivityThread.java:161)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1265)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5356)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
at dalvik.system.NativeStart.main(Native Method)
Why the android studio is forcing me to use this?
Android工作室不是"forcing"你随便做的
我的猜测是您在 Android Studio 中创建了一个新项目,并在其中创建了一个新的 activity。此类项目的模板将项目设置为使用 appcompat-v7
及其 ActionBarActivity
、Theme.AppCompat
等。这为您提供了一个可以返回到 API 级别 7 的操作栏,而本机操作栏仅适用于 API 级别 11。并且 appcompat-v7
操作栏类似于 Material 设计操作栏,它是 Android 5.0 的原生设计。
您不必使用任何这些。它只是从模板中提供给您的内容。如果您不喜欢模板中的内容,则需要更改从模板中为您生成的文件。这与模板在任何其他工具中的工作方式没有什么不同,无论是开发工具(例如,网站生成器)还是办公生产力工具(例如,Microsoft Word)。
在此特定情况下,欢迎您:
从
build.gradle
文件的dependencies
中删除appcompat-v7
行。在典型的 Android Studio 项目中,该文件将是app/
模块目录中的文件。将您的 activity 更改为继承自
Activity
而不是ActionBarActivity
。将主题更改为不使用
Theme.AppCompat
。更改您的菜单资源(
app/src/main/res/menu/*
在典型的 Android Studio 项目中)以将任何app:
前缀替换为android:
前缀(例如,app:showAsAction
变为android:showAsAction
).
那么,您将不再使用 appcompat-v7
。您将在 API 级别 11+ 上使用本机操作栏,如果您的 minSdkVersion
级别低于 11,则返回到旧式选项菜单。您将能够让您的主题继承自一个Theme.Holo
系列的,对于 Android 5.0+ 设备(例如,在 res/values-v21/styles.xml
文件中)可选择继承 Theme.Material
。