在活动之间传递变量数据 (Kotlin) - 传递NULL而不是值。

问题描述 投票:0回答:1

我一直试图将两个变量从我的MainActivity.kt传递到我的HomeActivity.kt;isRunning (Boolean)和time_in_milli_seconds (Long),这两个变量都在MainActivity中声明。

我看了无数的教程,已经卡了好几天了。我知道这只是几行代码,但我在网上看到的几十个例子(通过YT或SE)都没有解决我所遇到的特殊问题。如果这是一个重复的帖子,我很抱歉!

这是我的代码。

    class MainActivity : AppCompatActivity() {
        var isRunning: Boolean = false;
        var time_in_milli_seconds = 1000L

        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
...

    //perform a bunch of other stuff where isRunning and time_in_milli_seconds have values that are not null 
...

            val intent = Intent(this@MainActivity, HomeActivity::class.java)
            intent.putExtra("isRunningHome", isRunning)
            intent.putExtra("lastKnownTimeLong", time_in_milli_seconds)

}}

在第二个活动中,

    class HomeActivity : AppCompatActivity() {

        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_home)

            var intent = intent
            var var2 = intent.getBooleanExtra("isRunningHome")                
            var var1 = intent.getLongExtra("lastKnownTimeLong")

   }}

但我的HomeActivity不会编译,因为每行var1和var2都给出了错误 "参数DefaultValue没有传递值"。经过一些额外的测试,Kotlin似乎在为这两个变量传递Null值,但我终其一生都无法找出原因--这是一个百万美元的问题。目前,程序甚至无法编译。

我已经尝试过

1)将isRunning和time_in_milli_seconds的值设置为textviews的文本参数,然后将意图应用到它们各自的文本参数上--结果--在 "传递 "到HomeActivity后显示为NULL值。

2)将Long和Boolean变量转换为字符串,并以字符串的形式传递,然后在HomeActivity中使用getStringExtra--这对Long变量有效,但对Boolean则无效。这在道德上也感觉是错误的,是一种非常糟糕的编程技术。

3)改变意图的放置和检索位置(OnCreate内部或外部,函数内部和外部等)。这对我的结果没有任何改变。

如果有任何帮助将非常感激!!!

android kotlin android-intent android-activity
1个回答
0
投票

你所需要做的就是提供一个默认的

var var2 = intent.getBooleanExtra("isRunningHome", false)
var var1 = intent.getLongExtra("lastKnownTimeLong", 0L)
© www.soinside.com 2019 - 2024. All rights reserved.