如何在 Android Studio (kotlin) 的不同 Activity 中使用相同的变量?

How can I use the same variable in different activities in Android Studio (kotlin)?

提问人:turbodynamic 提问时间:3/13/2023 更新时间:3/14/2023 访问量:69

问:

所以我正在制作一个健身/健康应用程序,我需要公开一些用户输入,以便我可以在其他屏幕(活动)上使用他们的值。我在网上查看了如何做到这一点,我得到的最接近的是一个伴生物体。但这不起作用,因为 Kotlin 不允许我在类内的变量中使用 findViewByID。我找到的所有其他解决方案都适用于 Java,我正在使用 Kotlin。

我尝试将用户输入作为活动类中的伴随对象,但在我使用 findViewByID 获取用户输入并将其放入变量中后,这不起作用。

这是我的代码,希望它不会太长:

package com.example.optilife

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import com.google.firebase.database.DatabaseReference


class LogIn1stTimeActivity : AppCompatActivity() {
    companion object {
        val userHeight = findViewById<EditText>(R.id.et_UserHeight) //so this doesn't work because it doesn't allow me to use findViewByID
    }
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_log_in1st_time)
        val welcomeButton = findViewById<Button>(R.id.welcomeButton)
        val userHeight = findViewById<EditText>(R.id.et_UserHeight)
        val userWeight = findViewById<EditText>(R.id.et_UserWeight)
        val userAge = findViewById<EditText>(R.id.et_UserAge)

        welcomeButton.setOnClickListener { var recommendedCalories = 66 + 13.7*userWeight.text.toString().toInt() + 5*userHeight.text.toString().toInt() - 6.8*userAge.text.toString().toInt()

            println("$recommendedCalories")

            val intent = Intent(this, WelcomeActivity::class.java)
            startActivity(intent)}
    }
} 

因此,我想在另一个屏幕上计算推荐的卡路里,并且我需要该屏幕上的用户输入。 任何帮助将不胜感激,谢谢。

Android XML Kotlin 变量 findViewByID

评论

0赞 Zain 3/13/2023
将其值与 intent.putExtra 一起发送
0赞 Lawrence Gimenez 3/13/2023
有很多解决方案,您可以将其暂时保存在 SharedPreferences 中,或者正如 Zain 所说,您可以使用 Intent extra 传递值。
0赞 Jaydip 3/13/2023
只需定义为 lateinit var,然后定义到 oncreate 中,然后在其他活动中使用它,并在使用之前检查它是否初始化,这也是方式

答:

0赞 WebDesk Solution 3/14/2023 #1

您可以只使用 intent.putExtra with intent 并传递“recommendedCalories”数据。

welcomeButton.setOnClickListener  
{ 
  var recommendedCalories = 66 + 13.7*userWeight.text.toString().toInt() + 
        5*userHeight.text.toString().toInt() - 6.8*userAge.text.toString().toInt()

        println("$recommendedCalories")

         val intent = Intent(this@LogIn1stTimeActivity,WelcomeActivity::class.java)
         intent.putExtra("Calories", recommendedCalories)
         startActivity(intent)
 }

在 WelcomeActivity.class 中获取值并将它们存储在一个变量中。

    val resultIntent = intent.extras

    if (resultIntent != null) {
        val calories= resultIntent.getDouble("Calories")
    }