refactor(activity): 使用 Activity Result API 替换已弃用的 startActivityForResult

更新 MainActivity 以使用新的 Activity Result API 处理 SettingsActivity 返回的结果,替代已弃用的 startActivityForResult 和 onActivityResult 方法。这遵循了 Android 最新的开发实践,提高了代码的健壮性和可维护性。
This commit is contained in:
2026-03-28 10:12:07 +08:00
parent 4983c4c1ad
commit 2e0fa51a19

View File

@@ -15,6 +15,8 @@ import android.util.Base64
import android.graphics.drawable.GradientDrawable import android.graphics.drawable.GradientDrawable
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityCompat import androidx.core.app.ActivityCompat
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import com.example.lzwcai_terminal_temi.databinding.ActivityMainBinding import com.example.lzwcai_terminal_temi.databinding.ActivityMainBinding
import com.robotemi.sdk.Robot import com.robotemi.sdk.Robot
@@ -63,14 +65,9 @@ class MainActivity : AppCompatActivity(), OnRobotReadyListener, TtsListener, OnG
private var liveKitManager: LiveKitManager? = null private var liveKitManager: LiveKitManager? = null
private var isLiveKitConnected = false private var isLiveKitConnected = false
companion object { private val clearTaskLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
private const val REQUEST_CLEAR_TASK = 1001 if (result.resultCode == RESULT_OK) {
} result.data?.getBooleanExtra("clear_task", false)?.let { clearTask ->
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == REQUEST_CLEAR_TASK && resultCode == RESULT_OK) {
data?.getBooleanExtra("clear_task", false)?.let { clearTask ->
if (clearTask) { if (clearTask) {
setCurrentTask("") setCurrentTask("")
} }
@@ -159,7 +156,7 @@ class MainActivity : AppCompatActivity(), OnRobotReadyListener, TtsListener, OnG
lastArrivalLocation = prefs.getString("current_location", null) lastArrivalLocation = prefs.getString("current_location", null)
} }
binding.btnSettings.setOnClickListener { binding.btnSettings.setOnClickListener {
startActivityForResult(Intent(this, SettingsActivity::class.java), REQUEST_CLEAR_TASK) clearTaskLauncher.launch(Intent(this, SettingsActivity::class.java))
} }
taskController = TaskController( taskController = TaskController(