我正在尝试使用 Scala 2.9.2 创建一个 Android 应用程序。到目前为止,我已准备好要编译的所有内容。
但是,当我在我的 Activity 中执行以下操作时遇到了问题:
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
我认为这些会兼容。
谁能建议如何解决这个问题?
最佳答案
以下是针对 Scala 2.10 的,但我认为错误的原因与 Scala 2.9.x 完全相同。
顺便说一下,类型Activity
中的onCreateDialog(int)
方法已被弃用,但这不是重点。
现在,无论如何我都不是 Scala 专家,但根据我的观察,不返回任何内容的函数看起来确实像 def fun(arg) {}
,还有一些这样做:def fun(arg) = {}
。注意 =。如果需要,您还可以拼出返回类型。
所以我试图覆盖你提到的方法,这是(简单的)实现:
override def onCreateDialog(id : Int) = {
super.onCreateDialog(id)
}
它编译和运行得很好。当你删除 = 时,你会得到你现在遇到的错误:
overriding method
onCreateDialog
in classActivity
of type(x$1: Int)android.app.Dialog;
methodonCreateDialog
has incompatible type
整个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 与 bundle 的 Eclipse (Juno) 一起使用,创建了一个默认的 Android 项目,包括 Scala-IDE(Scala 性质)和 AndroidProguardScala(AndroidProguardScala 性质)
关于android - 覆盖 onCreateDialog() 时类型不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15317800/