主要活动如下:
class MainActivity : AppCompatActivity() {
private lateinit var mViewModel: MainActivityVm
private lateinit var mTv: TextView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setSupportActionBar(findViewById(R.id.toolbar))
mTv = findViewById(R.id.tv)
mViewModel =
ViewModelProviders.of(this)
.get(MainActivityVm::class.java)
mViewModel.counter.observe(this, Observer<Int> { counter ->
mTv.setText(counter.toString())
})
fab.setOnClickListener { view ->
if(null != mViewModel.counter.value)
{
mViewModel.counter.value++
}
}
}
// ...
}
当单击fab按钮时,我尝试在数据模型中增加计数器
fab.setOnClickListener { view ->
if(null != mViewModel.counter.value)
{
mViewModel.counter.value++
}
}
但是我在第< code > mview model . counter . value 行得到一个错误
智能转换为“整数”是不可能的,因为“mView模型.计数器.值”是一个复杂的表达式
错误是什么意思?
这里是数据模型
class MainActivityVm : ViewModel() {
val counter = MutableLiveData<Int>().apply { postValue(0)}
}
编辑
如果我注释掉空检查
fab.setOnClickListener { view ->
//if(null != mViewModel.counter.value)
//{
mViewModel.counter.value++
//}
}
我收到错误
在Int类型的可空接收器上只允许安全(?)或非空断言(!!)调用?
编辑
使用空检查!!
fab.setOnClickListener { view ->
if(null != mViewModel.counter.value)
{
mViewModel.counter!!.value++
}
}
给出初始错误
智能转换为“整数”是不可能的,因为“mView模型.计数器.值”是一个复杂的表达式
您只需要使用可变的实时数据#postValue() 方法。
此外,最好将功能放在ViewModel中。
在ViewModel中添加一个方法来增加计数器:
class MainActivityViewModel : ViewModel() {
val counter = MutableLiveData<Int>().apply { postValue(0)}
public fun incrementCounter() {
counter.let {
val currentVal: Int? = it.value
currentVal?.let { cur ->
it.postValue(cur + 1)
}
}
}
}
这也可以写成:
public fun incrementCounter() {
val currentVal: Int? = counter.value
if (currentVal != null)
counter.postValue(currentVal + 1)
}
然后,单击FAB时调用该方法:
fab.setOnClickListener { view ->
viewModel.incrementCounter()
}
我的困难是 如何修复函数SortByTotal中的任何错误? 1.1错误:(32,51)Kotlin:无法智能强制转换为“OrderProcessing.OrderNode”,因为“Run.Next”是一个复杂的表达式 我明白有很多错误,回答其中的任何一个部分或者给我一些暗示已经很感激了。谢谢你的好意。 我的代码如下: 涉及的类:
我正在尝试在 Kotlin 中生成一个单例,并且遇到了问题,因为我无法。 这似乎是制作单例的一种非常标准的方法。为什么它不让我,我该如何解决它?
智能转换为“GridLayoutManager”是不可能的,因为“ViewManager”是一个可变属性,此时可能已更改 是错误,AndroidStudio显示时,试图添加一个除法器到我的回收视图。 PixelsFragment.kt 我找到了这个答案,它说这样的问题可能是因为在执行该行时变量可能碰巧为< code>null,然后他们提供了3个解决方案。然而,根据我的理解,< code>viewM
我将Java代码转换为静态编程语言(Android Studio的自动转换),我得到以下错误: Java方法如下所示: 静态编程语言中的转换代码: 我没有找到解决方案,因为我没有正确理解它。任何指导将不胜感激。 感谢您抽出宝贵时间接受采访
我正在用kotlin为android制作一个小型tasker。我将主要活动分成一些片段,然后为每个片段创建一个视图模型。但是现在这里出现了一个问题。 下面是一些代码: 我本来希望在observer方法的帮助下在主屏幕上看到一些创建的单选按钮,但是我得到了一个例外,这在问题的标题中提到。提前感谢您的帮助!
我试图得到一个类,它结合了< code>Kotlin中的列表、集合和映射。我希望编写< code>isScalar函数,如果对象只包含一个元素,它应该返回< code>true 不幸的是,相比之下,它给了我一个错误 说着 据我所知,这与多线程假设有关。在Java,如果期望多线程,我会使函数。此外,如果我不编写线程安全的,我可以完全忽略这一点。 静态编程语言应该怎么写? 我看到了这个解决方案http