我定义的变量是null,但后来基于view.tag对象类型我必须设置它。但是它说Required Nothing found RequestCenterDetails
。以下是我尝试这样做的方法
holder?.addressIcon?.setOnClickListener {
val tagObject = holder.institutecardView.getTag(R.id.item_institute_cardview)
var center=null
if(tagObject is RequestCenterDetails)
{
Log.d("location","-------------TEST----------- its a RequestCenter")
center=tagObject as RequestCenterDetails // over here it say "Required Nothing found RequestCenterDetails"
}
else if(tagObject is Center)
{
Log.d("location","-------------TEST----------- its a Center")
}
问题是我必须根据字段值采取相同的操作,但两个对象都有不同的字段名称。有没有更好的方法来做到这一点。我是kotlin的新手。
答案 0 :(得分:4)
如果您知道center
将是RequestCenterDetails
,请执行
var center: RequestCenterDetails? = null
如果center
也可以是其他类型,请执行
var center: Any? = null
您正在做的更简洁的版本是:
var center: RequestCenterdetails? = tagObject as? RequestCenterDetails
如果tagObject
为tagObject
,则将RequestRecenterDetails
的值指定为中心,否则为其分配null
。
答案 1 :(得分:1)
原因是,您的变量center
的类型为Nothing?
。
你可以这样说:
var center: Any? = null
但这不适合使用这种通用类型。
答案 2 :(得分:0)
您只需要指定类型,因为编译器不清楚,我建议您在层次结构中放置尽可能高的常用类型(对于RequestCenterDetails
和{{1如果您可以接受任何类型,则只需Center
:
Any
或
var center: Any = null