在Android Studio中用Kotlin进行开发。 Activity部分代码如下 override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) when (requestCode) { 1 -> if (resultCode == RESULT_OK) { val returnedData = data?.getStringExtra("data_return") Log.d("FirstActivity", "returned data is $returnedData") } } }
有没有不建议使用的、或过时的函数?请纠正和完善代码。
在Android开发中,onActivityResult
方法已经被标记为过时(deprecated),建议使用新的Activity Result API来处理结果。新的API更简洁且更易于管理。
以下是如何使用新的Activity Result API来替代onActivityResult
方法的示例:
首先,在你的Activity中定义一个ActivityResultLauncher
来启动Activity并处理结果。
然后,在onCreate
方法中初始化这个ActivityResultLauncher
。
最后,使用ActivityResultLauncher
来启动Activity。
以下是完整的代码示例:
import android.content.Intent
import android.os.Bundle
import android.util.Log
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AppCompatActivity
class FirstActivity : AppCompatActivity() {
private lateinit var startForResult: ActivityResultLauncher<Intent>
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_first)
// Initialize the ActivityResultLauncher
startForResult = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
if (result.resultCode == RESULT_OK) {
val returnedData = result.data?.getStringExtra("data_return")
Log.d("FirstActivity", "returned data is $returnedData")
}
}
// Example of how to start another activity
val intent = Intent(this, SecondActivity::class.java)
startForResult.launch(intent)
}
}
在这个示例中,我们使用registerForActivityResult
方法来注册一个ActivityResultLauncher
,并使用ActivityResultContracts.StartActivityForResult()
来处理结果。这样可以避免使用过时的onActivityResult
方法。
请注意,你需要根据你的实际需求来启动Activity,这里只是一个示例。