android - 覆盖 onCreateDialog() 时类型不兼容

标签 android scala compiler-errors

我正在尝试使用 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 class Activity of type (x$1: Int)android.app.Dialog; method onCreateDialog 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/

相关文章:

android - no concrypt_openjdk_jni in java.library.path 错误如何解决?

java - 如何将python中的定位代码转换为kotlin?

java - RenderScript 支持库出现 IllegalAccessError

android - Kotlin中使用AlertDialog输入错误密码时如何返回输入界面?

scala - 在 Play 框架 2.5 (Scala) 中使用 CSRF token 测试请求

types - 类型错误和可判定性-编译器

compilation - 编译错误: hidden symbol `__aeabi_uidiv'

java - Android运行时致命异常: main amongst many other errors

scala - Play 框架 2.0 Controller /异步究竟是如何工作的?

带列表的 Scala foldLeft