【问题标题】:Passing multiple values to another Activity in Android Studio with Kotlin使用 Kotlin 将多个值传递给 Android Studio 中的另一个 Activity
【发布时间】:2020-07-14 03:55:54
【问题描述】:

将多个值传递给另一个活动在我的 android 项目中不起作用。 我想创建在 android 中传递应用程序设置值的设置菜单活动。 这些值由开关和数字选择器等小部件设置。

这是我的 MenuActivity 女巫从

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”,如果我点击开关和 nuberpicker,它不会改变。 谁能帮帮我。

【问题讨论】:

标签: android kotlin android-intent numberpicker


【解决方案1】:

您的问题是表示额外数据的所有字符串(EXTRA_VALUE1EXTRA_VALUE2、...)都具有相同的字符串值。你需要给他们一个不同的字符串,否则你只是写在以前的值上。

【讨论】:

    【解决方案2】:

    您需要为每个常量设置不同的值。因为现在你只收到来自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"
    

    【讨论】:

      猜你喜欢
      • 2020-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-30
      • 2021-06-08
      • 1970-01-01
      • 1970-01-01
      • 2016-08-09
      相关资源
      最近更新 更多