使用 Kotlin 在 Android Studio 中将多个值传递给另一个 Activity
Passing multiple values to another Activity in Android Studio with Kotlin
将多个值传递给另一个 activity 在我的 android 项目中不起作用。
我想创建设置菜单 activity 来传递 android 中应用程序的设置值。
这些值由小部件设置,例如 s 和数字选择器。
这是我的 MenuActivity 从
传递 vlues
const val EXTRA_VALUE1="com.exapmple.MyApplication.SETTING"
const val EXTRA_VALUE2="com.exapmple.MyApplication.SETTING"
const val EXTRA_VALUE3="com.exapmple.MyApplication.SETTING"
const val EXTRA_VALUE4="com.exapmple.MyApplication.SETTING"
class MenuActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(com.example.bowlingo.R.layout.activity_menu)
var value1 = 0
var value2 = 1
var value3 = 1
val switch1: Switch = findViewById(R.id.switch1)
switch1.setOnCheckedChangeListener { _, isChecked ->
if (isChecked)
value1 = 1
}
val switch2: Switch = findViewById(R.id.switch2)
switch2.setOnCheckedChangeListener { _, isChecked ->
if (isChecked)
value2 = 0
}
val switch3: Switch = findViewById(R.id.switch3)
switch3.setOnCheckedChangeListener { _, isChecked ->
if (isChecked)
value3 = 0
}
val numPicker = findViewById<NumberPicker>(R.id.numPicker)
numPicker.wrapSelectorWheel = false
val values = arrayOf("3", "5", "7")
numPicker.minValue = 0
numPicker.maxValue = values.size-1
numPicker.displayedValues = values
val vlue4= numPicker.value
val start: Button = findViewById(R.id.start)
start.setOnClickListener { // Handler code here.
val intent = Intent(this@MenuActivity, MainActivity::class.java).apply {
putExtra(EXTRA_VALUE1, value1)
putExtra(EXTRA_VALUE2, value2)
putExtra(EXTRA_VALUE3, value3)
putExtra(EXTRA_VALUE4, value4)
}
startActivity(intent);
}
}
}
这是MainActivity获取值的一部分
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val value1 = intent.getIntExtra(EXTRA_VALUE1,0)
val value2 = intent.getIntExtra(EXTRA_VALUE2,0)
val value3 = intent.getIntExtra(EXTRA_VALUE3,0)
val value4 = intent.getIntExtra(EXTRA_VALUE4,0)
val textView = findViewById<TextView>(R.id.textView).apply {
text = value1.toString() +":" + value2.toString() +":" + value3.toString()+ ":" + value4.toString()
}
}
MainAtivity 上的 textView 始终显示“1:1:1:1”,如果我点击 ses 和 nuberpicker,它也不会改变。
谁能帮帮我。
您的问题是表示额外数据的所有字符串(EXTRA_VALUE1
、EXTRA_VALUE2
、...)都具有相同的字符串值。你需要给他们一个不同的字符串,否则你只是写在以前的值上。
您需要为每个常量设置不同的值。因为现在你只收到来自 EXTRA_VALUE1
的值
例如:
const val EXTRA_VALUE1="com.exapmple.MyApplication.SETTING_1"
const val EXTRA_VALUE2="com.exapmple.MyApplication.SETTING_2"
const val EXTRA_VALUE3="com.exapmple.MyApplication.SETTING_3"
const val EXTRA_VALUE4="com.exapmple.MyApplication.SETTING_4"
将多个值传递给另一个 activity 在我的 android 项目中不起作用。 我想创建设置菜单 activity 来传递 android 中应用程序的设置值。 这些值由小部件设置,例如 s 和数字选择器。
这是我的 MenuActivity 从
传递 vluesconst val EXTRA_VALUE1="com.exapmple.MyApplication.SETTING"
const val EXTRA_VALUE2="com.exapmple.MyApplication.SETTING"
const val EXTRA_VALUE3="com.exapmple.MyApplication.SETTING"
const val EXTRA_VALUE4="com.exapmple.MyApplication.SETTING"
class MenuActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(com.example.bowlingo.R.layout.activity_menu)
var value1 = 0
var value2 = 1
var value3 = 1
val switch1: Switch = findViewById(R.id.switch1)
switch1.setOnCheckedChangeListener { _, isChecked ->
if (isChecked)
value1 = 1
}
val switch2: Switch = findViewById(R.id.switch2)
switch2.setOnCheckedChangeListener { _, isChecked ->
if (isChecked)
value2 = 0
}
val switch3: Switch = findViewById(R.id.switch3)
switch3.setOnCheckedChangeListener { _, isChecked ->
if (isChecked)
value3 = 0
}
val numPicker = findViewById<NumberPicker>(R.id.numPicker)
numPicker.wrapSelectorWheel = false
val values = arrayOf("3", "5", "7")
numPicker.minValue = 0
numPicker.maxValue = values.size-1
numPicker.displayedValues = values
val vlue4= numPicker.value
val start: Button = findViewById(R.id.start)
start.setOnClickListener { // Handler code here.
val intent = Intent(this@MenuActivity, MainActivity::class.java).apply {
putExtra(EXTRA_VALUE1, value1)
putExtra(EXTRA_VALUE2, value2)
putExtra(EXTRA_VALUE3, value3)
putExtra(EXTRA_VALUE4, value4)
}
startActivity(intent);
}
}
}
这是MainActivity获取值的一部分
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val value1 = intent.getIntExtra(EXTRA_VALUE1,0)
val value2 = intent.getIntExtra(EXTRA_VALUE2,0)
val value3 = intent.getIntExtra(EXTRA_VALUE3,0)
val value4 = intent.getIntExtra(EXTRA_VALUE4,0)
val textView = findViewById<TextView>(R.id.textView).apply {
text = value1.toString() +":" + value2.toString() +":" + value3.toString()+ ":" + value4.toString()
}
}
MainAtivity 上的 textView 始终显示“1:1:1:1”,如果我点击 ses 和 nuberpicker,它也不会改变。 谁能帮帮我。
您的问题是表示额外数据的所有字符串(EXTRA_VALUE1
、EXTRA_VALUE2
、...)都具有相同的字符串值。你需要给他们一个不同的字符串,否则你只是写在以前的值上。
您需要为每个常量设置不同的值。因为现在你只收到来自 EXTRA_VALUE1
例如:
const val EXTRA_VALUE1="com.exapmple.MyApplication.SETTING_1"
const val EXTRA_VALUE2="com.exapmple.MyApplication.SETTING_2"
const val EXTRA_VALUE3="com.exapmple.MyApplication.SETTING_3"
const val EXTRA_VALUE4="com.exapmple.MyApplication.SETTING_4"