当前位置: 首页 > news >正文

【Android Studio】导入import android.support.v7.app.AppcompatActivity;时报错

一、问题描述

在进行安卓项目开发时使用import android.support.v7.app.AppcompatActivity;报错:

运行后会有乱码出现:

二、解决办法

将import android.support.v7.app.AppcompatActivity;改为import androidx.appcompat.app.AppCompatActivity;基本上就可解决:

import androidx.appcompat.app.AppCompatActivity;

如下,可正常运行:


如果还是不能运行,就要确保导入外部模块之后

以下依赖项添加到build.gradle文件中:

implementation 'androidx.appcompat:appcompat:1.3.0'
implementation 'androidx.constraintlayout:constraintlayout:2.4.0'

然后,将以下属性添加到gradle.properties文件中:

android.useAndroidX=true
android.enableJetifier=true

注意,上述更改可能会导致项目中的某些库或代码出现兼容性问题,可能并不会解决问题!!!

三、问题分析

Android在2018年发布的AndroidX是一个全新的支持库,取代了旧的支持库(support library)。AndroidX提供了更好的兼容性和功能,并且是Google官方推荐使用的库。

从Android开发者官网的关于Jetpack库的迁移指南的从旧版Android Support库迁移到AndroidX库的工件映射表可以看出来旧构建工件com.android.support:appcompat-v7 迁移到了 androidx.appcompat:appcompat中去:

'AppCompatActivity'是继承自'Activity'的一个类,用于支持较旧版本的Android系统。在旧的支持库中,'AppCompatActivity'位于'android.support.v7.app'包中,但在AndroidX中,它被移动到了'androidx.appcompat.app'包中。

因此,如果在项目使用了AndroidX库,则需要将导入语句改为'import androidx.appcompat.app.AppCompatActivity;'。这样做是为了与项目所使用的库保持一致,以确保正确的编译和运行。

如果仍然使用旧的支持库,并且将导入语句改为'import androidx.appcompat.app.AppCompatActivity;',则会导致编译错误。

四、其他

有时就算导入旧版的支持库也不会影响项目的正常运行

可能是由于以下几个原因:

  1. 项目配置使用了AndroidX库:即使导入了旧的支持库,但如果项目的build.gradle文件中配置了使用AndroidX库,Android Studio会自动将旧的支持库转换为对应的AndroidX库。因此,即使导入了android.support.v7.app.AppCompatActivity;,实际上可能会被转换为androidx.appcompat.app.AppCompatActivity;

  2. 向后兼容性:在一些情况下,Android的编译器可能会尝试自动修复导入的错误库,以便使项目能够编译和运行。这种向后兼容性可能会导致即使导入了错误的库,项目仍然能够正常工作。

  3. 依赖关系:您的项目可能依赖于其他库或框架,这些库或框架可能会隐式地引入AndroidX库,从而覆盖您在代码中指定的支持库。

相关文章:

  • 【机器学习】原理与应用场景 Python代码展现
  • 「前端+鸿蒙」鸿蒙应用开发简介
  • day26-单元测试
  • Vue3实战笔记(56)—实战:DefineModel的使用方法细节
  • 设置密码重要性!美国一配件制造商因忘设密码影响50 多万客户
  • 百度/迅雷/夸克,网盘免费加速,已破!
  • Docker|了解容器镜像层(1)
  • 30、matlab现代滤波:维纳滤波/LMS算法滤波/小波变换滤波
  • STM32—按键控制LED(定时器)
  • 根据模板和git commit自动生成日·周·月·季报
  • ALSA 用例配置
  • Dokcer 基础使用 (4) 网络管理
  • C# 泛型函数
  • 毕业论文word常见问题
  • ElementUI中date-picker组件,怎么把大写月份改为阿拉伯数字月份(例如:一月、二月,改为1月、2月)
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • Apache Spark Streaming 使用实例
  • bootstrap创建登录注册页面
  • ES6--对象的扩展
  • gcc介绍及安装
  • Hibernate最全面试题
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • linux安装openssl、swoole等扩展的具体步骤
  • Phpstorm怎样批量删除空行?
  • SAP云平台里Global Account和Sub Account的关系
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 后端_MYSQL
  • 排序(1):冒泡排序
  • 漂亮刷新控件-iOS
  • 区块链分支循环
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 通过git安装npm私有模块
  • 写给高年级小学生看的《Bash 指南》
  • 异步
  • 怎样选择前端框架
  • 走向全栈之MongoDB的使用
  • 《码出高效》学习笔记与书中错误记录
  • Python 之网络式编程
  • 阿里云ACE认证学习知识点梳理
  • 正则表达式-基础知识Review
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​一些不规范的GTID使用场景
  • # AI产品经理的自我修养:既懂用户,更懂技术!
  • ### RabbitMQ五种工作模式:
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • (55)MOS管专题--->(10)MOS管的封装
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (独孤九剑)--文件系统
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (接口自动化)Python3操作MySQL数据库
  • (一)kafka实战——kafka源码编译启动
  • (转)Android学习笔记 --- android任务栈和启动模式