【问题标题】:Passing variable data between activities (Kotlin) - Passing NULL instead of value在活动之间传递可变数据 (Kotlin) - 传递 NULL 而不是值
【发布时间】:2020-05-07 22:13:12
【问题描述】:

我一直在尝试将 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】:

    您需要做的就是提供一个默认值

    var var2 = intent.getBooleanExtra("isRunningHome", false)
    var var1 = intent.getLongExtra("lastKnownTimeLong", 0L)
    

    【讨论】:

    • 完美 - 不敢相信我在文档中错过了这一点。非常感谢!!
    猜你喜欢
    • 2013-09-10
    • 2013-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多