我是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“块中。
我已经将数据(传递的意图)包装在null检查中,尝试使用null检查将其声明为新值,但在编译时总是得到相同的警告:
不安全地使用类型为Bundle的可空接收器?
它还一直在说这个贬低的警告:这个版本中使用了不推荐使用的Gradle功能,使其与Gradle 6.0不兼容。
我已经将gradle版本切换到了5.1.1,android Gradle插件目前的版本是3.4.0 (这可能是我的问题的一部分)
发布于 2019-05-14 19:09:33
data.extras可能为空,因此请确保将其与?.和as?一起使用
photoImageView.setImageBitmap(data?.extras?.get("data") as? Bitmap)这三个确保如果data、data.extras或"data"为null或不是Bitmap,则链本身也为null。
弃用的Gradle特性通常是关于弃用的API的警告。只要确保将你所有的插件更新到最新的版本,只要你需要的插件不能适应新的API,就不要更新到Gradle 6。但就目前而言,它只是警告您相关的更改。
https://stackoverflow.com/questions/56128031
复制相似问题