我是kotlin和android编程的新手,似乎这种语言发展很快,没有某些落后的功能。
这是MainActivity.kt中的两个主要功能
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
cameraButton.setOnClickListener {
val callCameraIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
if(callCameraIntent.resolveActivity(packageManager) != null) {
startActivityForResult(callCameraIntent, CAMERA_REQUEST_CODE)
}
}
replaceFragment(ReportsFragment())
bottom_navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener)
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
val dt: Intent? = data
when(requestCode) {
CAMERA_REQUEST_CODE -> {
if(resultCode == Activity.RESULT_OK && data != null) {
//if(data != null) {
//&& data != null){
photoImageView.setImageBitmap(data.extras.get("data") as Bitmap)
}
}
else -> {
Toast.makeText(this, "Unrecognized request code", Toast.LENGTH_SHORT).show()
}
}
}
错误似乎出现在onActivityResult的“ WHEN”块中。
我已将数据(通过Intent的数据)包装为null检查,试图通过null检查将其声明为新值,但在编译时始终会得到相同的警告:
是否不安全地使用Bundle类型的可为空的接收器?
它还不断说这个贬值的警告: 此版本使用了不推荐使用的Gradle功能,使其与Gradle 6.0不兼容。
我已将gradle版本切换到5.1.1,并且当前具有3.4.0的android Gradle插件(这两个问题都可能属于我的问题)
答案 0 :(得分:1)
data.extras
可能为null,因此请确保将其与?.
和as?
一起使用:
photoImageView.setImageBitmap(data?.extras?.get("data") as? Bitmap)
所有这三个都确保如果data
,data.extras
或"data"
为空或不是Bitmap
,则链本身为空。
不推荐使用的Gradle功能通常是有关不推荐使用的API的警告。只要确保将所有插件更新为最新的插件,并且只要您需要不适应新API的插件,就不要更新到Gradle 6。但是目前,它只是警告您有关的更改。