在Kotlin安装和Getters
我试图从一个按钮被按下时,从另一个活动更改trx
的值,我试过的是
ScoresActivity.kt :
class ScoresActivity : AppCompatActivity(), View.OnClickListener { var trx = 0 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_scores) } }
其他职业:
override fun onClick(p0: View?) { when(p0){ button_1 -> { ScoresActivity().trx = 5 } }
但是,只要我打印trx
的值是0。
问题:
当您调用ScoresActivity()
您将创建一个ScoresActivity
类的新实例。 因为你不保存这个实例,所以trx
值的设置丢失了。
解决方案:我不确定trx
应该代表什么,但是由于Activity
名称给出了一个提示,我认为它是某种分数(然后可以在全球范围内使用)。
一种方法是将trx放入ScoresActivity本身的companion object
中。
class ScoresActivity: Activity() { // ... companion object { var trx: Int = 0 } }
用法(来自任何活动):
ScoresActivity.trx = 5
其他方式是另一个类是一个单身(Kotlin中的object
),代表构成游戏状态的值或通过活动之间的意图传递trx
值。
- 你不应该使用默认的构造函数来创建Activity对象。 阅读关于android核心组件。
- 您可以存储为静态值。 把它放在对象内,使其成为类variables。 阅读关于实例/类variables。
- Kotlin – 重写方法中的IllegalArgumentException
- 在Kotlin中绑定具有多个参数的适配器
- Android Kotlin仪器测试不被识别为仪器测试
- Android / Kotlin:未解决的参考:木材
- 当处于调试器模式时,Android Studio 1.5与Kotlin Pluginexception。 如何解决它?
- Kotlin库项目失败的解决方案:[Lkotlin / reflect / KProperty
- 如何在Anko DSL布局中设置底部边距为FAB?
- 如何解决KaptError:Android Studio 3.0中的注释处理时出错?
- 如何避免Kotlin中同名冲突的types?