分类器没有伴随对象,因此必须在此处初始化

时间:2018-11-26 06:28:17

标签: android kotlin interface

我有一个Activity,其中声明了一个接口,并且我有一个ViewModel类,该类具有重写的接口,并且想从Activity调用接口的方法来对ViewModel类进行更改但无法调用Activity中的方法,说 ViewModel类没有伴随对象,因此必须在此处初始化。该如何解决?

var selection: setSelectionSubRow? = null
    selection=RowSubTShirtViewModel
    selection!!.setNameSelection(false)

以上代码位于Activity中,名称为TShirtActivity

下面的代码来自RowViewModel

class RowSubTShirtViewModel(private val subTShirtAdapter: SubTShirtAdapter, val context: TShirtActivity,
                        val tShirtBean: CommonItemBean, private val parentPosition: Int, private val position: Int) : BaseObservable() ,TShirtActivity.setSelectionSubRow{

fun getImageDrawable(): Drawable {
    return if (tShirtBean.isSelected)
        ContextCompat.getDrawable(context, R.drawable.green_border_circle)!!
    else
        ContextCompat.getDrawable(context, R.drawable.border_circle)!!
}

override fun setNameSelection(selection: Boolean) {
    if (parentPosition == 6) {
        if (position == 1) {
            tShirtBean.isSelected = false
        }
    }
}

2 个答案:

答案 0 :(得分:2)

此行SELECT sno FROM ( SELECT t.*, COUNT(*) OVER (PARTITION BY name) cnt FROM yourTable t ) t WHERE cnt > 1; 引用视图模型,就好像它是一个命名对象一样,这意味着您将编写而不是类对象:

selection=RowSubTShirtViewModel

但是,由于并非如此,kotlin告诉您您不能像这样引用它,而必须对其进行初始化。导体作为很多参数让我猜出它们是什么,但是从本质上讲,您必须将它们传递进来:

object RowSubTShirtViewModel {
   //...
}

答案 1 :(得分:0)

在我的情况下,我在ApplicationModule中遇到了dagger2的错误。

@Provides
@Singleton

 internal fun providesxx(xx: xxx): xx {
        return xx
    }

我只是重命名了论点!