Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当我在actionbar中做任何更改时,android中的应用程序将关闭_Android_Android Actionbar_Android Theme_Android Styles - Fatal编程技术网

当我在actionbar中做任何更改时,android中的应用程序将关闭

当我在actionbar中做任何更改时,android中的应用程序将关闭,android,android-actionbar,android-theme,android-styles,Android,Android Actionbar,Android Theme,Android Styles,这是舱单: <application android:allowBackup="true" android:icon="@drawable/professor" android:label="@string/app_name" android:theme="@style/AppTheme" > 为什么android studio强迫我使用这个 Android Studio不会“强迫”你做任何事情 我猜您在Android Studio中创建了一个新项目

这是舱单:

<application
    android:allowBackup="true"
    android:icon="@drawable/professor"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
为什么android studio强迫我使用这个

Android Studio不会“强迫”你做任何事情

我猜您在Android Studio中创建了一个新项目,并在其中创建了一个新活动。此类项目的模板将项目设置为使用
appcompat-v7
及其
ActionBarActivity
Theme.appcompat
等。这将为您提供一个操作栏,该操作栏可以恢复到API级别7,而本机操作栏只能恢复到API级别11。appcompat-v7的动作栏类似于Android 5.0自带的材质设计动作栏

你不必使用这些。它仅仅是从模板中提供给你的东西。如果不喜欢模板中的内容,则需要更改从模板生成的文件。这与模板在任何其他工具中的工作方式没有区别,无论是开发工具(如网站生成器)还是办公生产力工具(如Microsoft Word)

在这种情况下,欢迎您:

  • build.gradle
    文件中的
    依赖项中删除
    appcompat-v7
    行。在典型的Android Studio项目中,该文件将位于
    app/
    模块目录中

  • 将活动更改为继承自
    活动
    ,而不是
    操作活动

  • 将主题更改为不使用
    theme.AppCompat

  • 更改菜单资源(
    app/src/main/res/menu/*
    ,在典型的Android Studio项目中)以
    app:
    前缀替换为
    Android:
    前缀(例如,
    app:showAsAction
    变为
    Android:showAsAction


然后,您将不再使用appcompat-v7。您将在API级别11+上使用本机操作栏,如果
minSdkVersion
低于11,则返回旧式选项菜单。您可以让您的主题继承自Android 5.0+设备的
theme.Holo
系列,也可以选择继承自Android 5.0+设备的
theme.Material
(例如,在
res/values-v21/styles.xml文件中)。

使用LogCat查看与崩溃相关的Java堆栈跟踪:我发布了LogCat,我照他们说的做了,使用了Theme.appbattle,但仍然是同样的错误@Commonware“我照他们说的做了,使用了Theme.AppCombat,但仍然是同一个错误!”——问题中的代码与错误匹配,表明您没有使用
Theme.AppCompat
。下面是一个成功使用了
Theme.AppCompat
:非常感谢:)的项目目录,但是为什么我应该只使用Theme.AppCombat呢?我想用Theme.holo等。。还有其他人!为什么android studio强迫我使用这个?这些说明也帮助我解决了这个问题。Thx虽然它是非常混乱的,因为它提供了一个模板,而不是预期的工作。最重要的是,这个例子的说明也是错误的。再次感谢您的帮助,我相信当您了解所有这些文件是如何关联的时候,这一点是显而易见的。
<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>
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.access$900(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)