zoukankan      html  css  js  c++  java
  • Android:真机调试遇到的问题(You need to use a Theme.AppCompat theme (or descendant) with this activity)

    Android:真机调试遇到的问题(You need to use a Theme.AppCompat theme (or descendant) with this activity)。


    在调试《第一行代码》这本书上的代码时,遇到了一个问题,有一个问题是想在一个活动中打开一个对话框,我按照书中的代码敲上去出了错。

    我的机子是红米note,android版本是4.4.4。

    错误是报:

    Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
    

    书上源码:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.cailu.activitylifecycletest">
    
        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
            <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=".NormalActivity" />
            <activity android:name=".DialogActivity"
                android:theme="@android:style/Theme.Dialog"></activity>
        </application>
    
    </manifest>

    我改为下面这样就好了:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.cailu.activitylifecycletest">
    
        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
            <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=".NormalActivity" />
            <activity android:name=".DialogActivity"
                android:theme="@style/Theme.AppCompat.Dialog"></activity>
        </application>
    
    </manifest>

    那么根本原因是什么呢?查看日志,发现:

    On devices with API level below 21, a full build is required if the app is not running.

    dalvikvm: Could not find class 'android.graphics.drawable.RippleDrawable', referenced from method android.support.v7.widget.AppCompatImageHelper.hasOverlappingRendering
    其实,出现以上情况,是因为代码所调用的一些方法只能在较高的API level上使用,而调试用的机子或模拟器所用的SDK Version小于该API level。

  • 相关阅读:
    在windows下安装环回适配器(Microsoft Loopback Adapter)
    c#中的 ? 与 ??
    MVC中提交包含HTML代码的页面处理方法
    Linux(CentOS)日常操作命令
    MySql命令行下导出、导入数据
    NHibernate中text类型字段太长时被截断解决办法
    windows7下修改hosts文件无效解决办法
    IIS与Apache同时使用80端口
    因为数据库正在使用,所以无法获得对数据库的独占访问权 SQL 2005 / SQL 2008
    在windows64位服务器上运行windows32位机器上开发的asp.net应用程序
  • 原文地址:https://www.cnblogs.com/Arry10/p/7731776.html
Copyright © 2011-2022 走看看