Android Studio中提示:Call requires API level 16 (current min is 15): android.view.View#setBackground

本文介绍如何在Eclipse和Android Studio中调整最小SDK版本配置。在Eclipse中,需要修改AndroidManifest.xml文件中的uses-sdk标签;而在Android Studio中,则需要修改build.gradle文件中的minSdkVersion属性。


问题很简单,如果在eclipse中解决方法是AndroidManifest.xml中修改<uses-sdk   android:minSdkVersion 15改为16

AS中是修改build.gradle中的minSdkVersion就可以了

你遇到的这个错误: > **Call requires API level 33 (current min is 21): `android.content.Intent#getParcelableExtra`** 是因为你正在使用 Android 13(API 33)中引入的新方法: ```kotlin intent.getParcelableExtra("key", MyClass::class.java) ``` 而你的 `minSdkVersion` 设置为 **21(Android 5.0)**,低于 33,因此这个方法在旧设备上不可用,导致编译器报错。 --- ## ✅ 解决方案 要解决这个问题,你可以使用 **兼容旧版本 Android 的写法**,即: ```kotlin val person = intent.getParcelableExtra<Person>("person") ``` 这个写法在 API 33 以下版本仍然可用,但会提示 **"方法已过时"**,但不会导致崩溃。 --- ## ✅ 完整兼容写法(Kotlin) ```kotlin val person: Person? = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { // Android 13+ 使用新方法 intent.getParcelableExtra("person", Person::class.java) } else { // Android 12 及以下使用旧方法 intent.getParcelableExtra("person") } ``` > ✅ `Build.VERSION_CODES.TIRAMISU` 对应 API 33。 --- ## ✅ 示例:Person 类 ```kotlin import android.os.Parcelable import kotlinx.parcelize.Parcelize @Parcelize data class Person( val name: String, val age: Int ) : Parcelable ``` --- ## ✅ 发送方 Activity 传递对象 ```kotlin val person = Person("李四", 30) val intent = Intent(this, SecondActivity::class.java).apply { putExtra("person", person) } startActivity(intent) ``` --- ## ✅ 接收方 Activity 接收对象(兼容写法) ```kotlin val person: Person? = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { intent.getParcelableExtra("person", Person::class.java) } else { intent.getParcelableExtra("person") } ``` --- ## ✅ 总结对比 | 方法 | API 要求 | 是否推荐 | 说明 | |------|----------|----------|------| | `getParcelableExtra("key", MyClass::class.java)` | API 33+ | ✅ 推荐新设备 | 更安全、类型明确 | | `getParcelableExtra<MyClass>("key")` | API 1+ | ⚠️ 已过时(但可用) | Kotlin 中仍可用,但有警告 | --- ## ✅ 小贴士 - 如果你希望统一代码风格,可以使用 `Build.VERSION.SDK_INT` 来判断版本。 - 使用 `@Suppress("DEPRECATION")` 可以屏蔽过时警告(不推荐滥用)。 --- ##
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值