android - 使用Kotlin将多个值传递给Android Studio中的另一个Activity

标签 android kotlin android-intent numberpicker

将多个值传递给另一个 Activity 在我的Android项目中不起作用。
我想创建一个设置菜单 Activity ,以传递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”,如果我点击开关和数字小键盘,它不会改变。
谁能帮我。

最佳答案

您需要为每个常数设置一个不同的值。因为现在您只从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"

关于android - 使用Kotlin将多个值传递给Android Studio中的另一个Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60987166/

相关文章:

android - 将 LinearLayout 元素与来自另一个 LinearLayout 的元素对齐

android - 如何使用 Koin DI 在 Activity 之间共享相同的 ViewModel 实例?

android - 在将数据从 fragment 传递到 Activity 期间获得 Null 值

java - 在android中创建文件的问题

android - 为什么我的应用程序在启动照片 Intent 之后但在调用 onActivityResult() 之前崩溃?

android - 为什么我的调用堆栈说我有 2 个电源正在运行?

java - Android:使用按钮编辑文本字段

android - 如何在 AsyncTask 的 DialogFragment 中显示 ProgressDialog

kotlin - Kotlin 有方法调用标签吗?

android - 挂起函数只能在协程体内调用