提问人:Bhushan Savaratkar 提问时间:11/10/2023 更新时间:11/12/2023 访问量:21
我想将用户输入位置从一个屏幕使用到另一个屏幕,但我无法弄清楚这个意图部分
I want to use the user input locations from one screen to another, but I cannot figure out this intent part
问:
我正在制作一个类似于谷歌街景的虚拟导航应用程序。我通过微调器获取用户的当前位置和目的地,然后将这些输入转换为字符串。但是现在我想在我的 NavigationDispalyActivity.kt 中使用这些输入,但我无法弄清楚如何正确使用意图。
我的代码
MainActivity.kt (英语)
package com.example.collegeroamer
import android.content.Intent
import android.os.Bundle
import android.widget.ImageButton
import android.widget.Spinner
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
private lateinit var navigateButton: ImageButton
private lateinit var currentLocationSpinner: Spinner
private lateinit var destinationSpinner: Spinner
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
navigateButton = findViewById(R.id.navigateButton)
currentLocationSpinner = findViewById(R.id.currentLocationSpinner)
destinationSpinner = findViewById(R.id.destinationSpinner)
navigateButton.setOnClickListener {
val startingLocation = currentLocationSpinner.selectedItem.toString()
val destination = destinationSpinner.selectedItem.toString()
val intent = Intent(this, NavigationDisplayActivity::class.java)
intent.putExtra("selected_location", startingLocation)
startActivity(intent)
}
}
}
导航显示活动.kt
@file:Suppress("UNUSED_EXPRESSION")
package com.example.collegeroamer
import android.os.Bundle
import android.widget.ImageView
import androidx.appcompat.app.AppCompatActivity
class NavigationDisplayActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_image_display)
val locationImage = findViewById<ImageView>(R.id.locationImage)
val selectedLocation = intent.getStringExtra("selected_location")
val imageResourceId = getImageResourceIdForLocation(selectedLocation ?: "")
locationImage.setImageResource(imageResourceId)
}
private fun getImageResourceIdForLocation(location: String): Int {
return when (location) {
else -> R.drawable.default_image
}
}
}
答:
0赞
Bilal Naeem
11/12/2023
#1
您可以在一个 Intent 中传递多个键值对。每个密钥必须是唯一的,否则它将覆盖之前使用该密钥设置的任何内容。有关 Intent 的更多信息,您可以阅读此处的开发者文档
您可以执行以下操作
//MainActivity
navigateButton.setOnClickListener {
val startingLocation = currentLocationSpinner.selectedItem.toString()
val destination = destinationSpinner.selectedItem.toString()
val intent = Intent(this, NavigationDisplayActivity::class.java)
intent.putExtra("selected_location", startingLocation)
intent.putExtra("destination", destination) //<--- This is the new change
startActivity(intent)
}
//NavigationDisplayActivity
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_image_display)
val locationImage = findViewById<ImageView>(R.id.locationImage)
val selectedLocation = intent.getStringExtra("selected_location")
val imageResourceId = getImageResourceIdForLocation(selectedLocation ?: "")
locationImage.setImageResource(imageResourceId)
val destinationLocation = intent.getStringExtra("destination) //<-- Here we can fetch the value
}
评论