如何在同伴对象中获得packageName ?



我想做一个唯一的键当我发送一个intent/bundle到新的Activity/Fragment在Android。
所以,我决定使用packageName

companion object {
val MY_UNIQUE_KEY = "${this@Companion::class.java.packageName}MY_KEY"
fun newInstance(user: User): UserFragment = UserFragment().apply {
arguments = bundleOf(
MY_UNIQUE_KEY  to user
)
}
}

但是,在这种情况下,我不能使用this@Companion::class.java.packageName,因为android系统警告我它需要API 31(我的支持API 21)。

我怎样才能做到呢?或者你能告诉我另一种好方法吗?

同样可以使用package字段。像这样:

val MY_UNIQUE_KEY = "${this@Companion::class.java.`package`?.name.orEmpty()}MY_KEY"

试试这个代码

fun newInstance(user: User): UserFragment = UserFragment().apply {
arguments = bundleOf(
if (VERSION.SDK_INT >= VERSION_CODES.S) {
"${javaClass.packageName}MY_KEY" to user
} else {
"${javaClass.getPackage()?.name.orEmpty()}MY_KEY" to user
}
)
}

或者为每个Fragment/Activity创建唯一的常数String值。

相关内容

  • 没有找到相关文章

最新更新