【发布时间】: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