[英]How to get packageName in companion object?
I want to make a unique key when i send a intent/bundle to new Activity/Fragment in Android.当我将意图/捆绑包发送到 Android 中的新活动/片段时,我想制作一个唯一的密钥。
So, i decided to use packageName
.所以,我决定使用
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
)
}
}
But, in this case, i couldn't use this@Companion::class.java.packageName
because the android system warns me that it requires API 31(mine supports API 21).但是,在这种情况下,我不能使用
this@Companion::class.java.packageName
因为 android 系统警告我它需要 API 31(我的支持 API 21)。
How can i make it?我怎样才能做到? or could you tell me another good way?
或者你能告诉我另一个好方法吗?
Try this code试试这个代码
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
}
)
}
OR just create Unique Constant String
value for each Fragment/Activity
.或者只是为每个
Fragment/Activity
创建 Unique Constant String
值。
You may use the package
field for the same.您可以使用
package
字段。 Like so:像这样:
val MY_UNIQUE_KEY = "${this@Companion::class.java.`package`?.name.orEmpty()}MY_KEY"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.