提问人:JenairoB 提问时间:3/16/2023 最后编辑:JenairoB 更新时间:3/16/2023 访问量:193
如何在多个活动之间共享变量?(科特林)
How can I share a variable across multiple activities? (Kotlin)
问:
我正在尝试在多个活动中共享一个变量,到目前为止,我所能找到的就是如何将其从一个活动移动到下一个活动(通过单击一个按钮,您可以转到下一个活动,变量就会被转移)。但是当尝试将此过程进一步重复到一个屏幕时,我不断打印出默认值 0。为什么会这样?
下面的代码显示了三个活动中第一个活动内的相应代码。因此,当我单击按钮转到下一个活动时,所有这些变量都会转移到下一个活动。但是当我在下一个活动中重复此代码时,它不起作用。
val welcomeButton = findViewById<Button>(R.id.welcomeButton)
welcomeButton.setOnClickListener {
val userHeight = findViewById<EditText>(R.id.et_UserHeight).text.toString().toInt()
val userWeight = findViewById<EditText>(R.id.et_UserWeight).text.toString().toInt()
val userAge = findViewById<EditText>(R.id.et_UserAge).text.toString().toInt()
val userGender = findViewById<Spinner>(R.id.genderSpinner).toString()
val userActivityLevel = findViewById<Spinner>(R.id.activityLevelSpinner).toString()
val userWeightGoal = findViewById<Spinner>(R.id.weightGoalSpinner).toString()
val intent = Intent(this, WelcomeActivity::class.java)
intent.putExtra("EXTRA_AGE", userAge)
intent.putExtra("EXTRA_HEIGHT", userHeight)
intent.putExtra("EXTRA_WEIGHT", userWeight)
intent.putExtra("EXTRA_GENDER", userGender)
intent.putExtra("EXTRA_ACTIVITYLEVEL", userActivityLevel)
intent.putExtra("EXTRA_WEIGHTGOAL", userWeightGoal)
startActivity(intent)
}
下面的代码是我尝试将变量发送到第三个活动的第二个活动。但是我无法在第三个活动上使用变量。有什么想法吗?
val userAge = intent.getIntExtra("EXTRA_AGE", 0)
val userHeight = intent.getIntExtra("EXTRA_HEIGHT", 0)
val userWeight = intent.getIntExtra("EXTRA_WEIGHT", 0)
val userGender = intent.getStringExtra("EXTRA_GENDER")
val userActivityLevel = intent.getStringExtra("EXTRA_ACTIVITYLEVEL")
var userWeightGoal = intent.getStringExtra("EXTRA_WEIGHTGOAL")
val welcomeToHomeButton = findViewById<Button>(R.id.SendToHomeButton)
welcomeToHomeButton.setOnClickListener {
intent.putExtra("EXTRA_AGE", userAge)
intent.putExtra("EXTRA_HEIGHT", userHeight)
intent.putExtra("EXTRA_WEIGHT", userWeight)
val intent = Intent(this, HomeActivity::class.java)
startActivity(intent)
}
答:
0赞
mol
3/16/2023
#1
每个 Activity 都有一个 getIntent 方法(在 kotlin 中翻译为),该方法返回启动该 Activity 的 intent。intent
在下面的代码中,您首先将额外内容设置为第二个 Activity 的 intent,然后创建一个启动第三个 Activity 的新 intent:
welcomeToHomeButton.setOnClickListener {
intent.putExtra("EXTRA_AGE", userAge)
intent.putExtra("EXTRA_HEIGHT", userHeight)
intent.putExtra("EXTRA_WEIGHT", userWeight)
val intent = Intent(this, HomeActivity::class.java)
startActivity(intent)
}
您需要先创建一个新的 Intent,然后为其设置附加功能,如下所示:
welcomeToHomeButton.setOnClickListener {
val intent = Intent(this, HomeActivity::class.java)
intent.putExtra("EXTRA_AGE", userAge)
intent.putExtra("EXTRA_HEIGHT", userHeight)
intent.putExtra("EXTRA_WEIGHT", userWeight)
startActivity(intent)
}
评论