我正在尝试使用Scala 2.9.2创建一个Android应用程序。到目前为止,我已经有了一切可以编译。
但是,当我在我的活动中执行以下操作时遇到问题:
override def onCreateDialog(id: Int) {
编译器抱怨类型不兼容,因为Activity.onCreateDialog()
采用原始int
但我传递的是scala.Int
。
以下是编译错误:
error: overriding method onCreateDialog in class Activity of type (x$1: Int)android.app.Dialog;
[INFO] method onCreateDialog has incompatible type
[INFO] override def onCreateDialog(id: Int) {
[INFO] ^
[ERROR] one error found
我认为这些是兼容的。
有人可以建议如何解决这个问题吗?
答案 0 :(得分:1)
以下内容适用于Scala 2.10,但我认为错误的原因与Scala 2.9.x完全相同。
顺便说一下,onCreateDialog(int)
类型中的Activity
方法已被弃用,但它不在此处。
现在,我不是任何方式的Scala专家,但从我注意到的,不返回任何内容的函数看起来像def fun(arg) {}
,而且看起来像def fun(arg) = {}
。请注意 = 。如果需要,您还可以拼出返回类型。
所以我试图覆盖你提到的方法,这是(琐碎的)实现:
override def onCreateDialog(id : Int) = {
super.onCreateDialog(id)
}
它编译并运行得很好。当您删除 = 时,您将收到错误:
在
onCreateDialog
方法Activity
类的(x$1: Int)android.app.Dialog;
类中覆盖方法onCreateDialog
不兼容的类型
整个MainActivity
:
class MainActivity extends Activity {
override def onCreate(savedInstanceState : Bundle) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main_activity)
}
override def onCreateDialog(id : Int) = {
super.onCreateDialog(id)
}
}
注意:我正在使用ADT与捆绑式Eclipse(Juno),创建了一个默认的Android项目,包括Scala-IDE(Scala nature)和AndroidProguardScala(AndroidProguardScala nature)