我正在将我的一个Android项目迁移到kotlin,在java中我经常在类的底部声明匿名内部类,例如
@Override
public void onCreate(Bundle ...) {
...
findViewById(R.id.btnDelete).setOnClickListener(mDeleteClickListener);
}
...
...
...
private View.OnClickListener mDeleteClickListener = new View.OnClickListener {
@Override
public void onClick(View v) {
// Process event using class variables
findViewById(...)
}
};
然而,考虑kotlin中的这种类似模式:
override fun onCreate(b: Bundle) {
...
findViewById<View>(R.id.btnDelete).setOnClickListener(mDeleteClickListener)
}
...
...
...
private val mDeleteClickListener = object : View.OnClickListener {
override fun onClick(v: View) {
// Process event using class variables
findViewById(...)
}
}
它不允许我这样做,因为它在内部类之前声明了函数onCreate
。我必须将它移到我使用它的函数之上,我不喜欢在类的顶部声明这些内部类。
有没有办法在kotlin中使用这种模式?