1

我有一点用 Java 为 Android 编程的经验,但我最近接触了 Scala,并想用这种语言编写我的 Android 应用程序。我有 ScalaIDE nightly 和 AndroidProguardScala 的 Eclipse 设置,我可以很好地运行用 Scala 编写的 hello world 应用程序。我决定通过代码更改 TextView 的值以感受使用 Scala,但我似乎无法为 setText 做任何事情。

这是我最近的尝试:

import android.app.Activity
import android.os.Bundle
import android.view.Menu
import android.widget.TextView

class MainActivity extends Activity {
    def textview = findViewById(R.id.testTV)

    override def onCreate(savedInstanceState : Bundle) {
       super.onCreate(savedInstanceState)
       setContentView(R.layout.activity_main)

       val works = "Scala is working"

       textview.setText(works)

}

我发现发布的原始方式是:

val testText = findViewById(R.id.testTV)
val works = "Scala is working"
testText setText works

两种方法都行不通。两者都给我一个错误,指出 setText 不是 android.view.View 的成员。有人有这方面的经验可以帮助我吗?

这是我的 XML 文件:

    <TextView
        android:id="@+id/testTV"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

</RelativeLayout>
4

2 回答 2

2

findViewById可能返回 a View,它没有setText方法。由于您没有在 上声明类型testText,因此编译器正在推断View.

尝试:

val testText:TextView = findViewById(R.id.testTV)

以便编译器知道它是 a TextView,并且setText应该可以工作。

于 2013-02-24T10:24:06.933 回答
0
val str = "Hi from Scala"
findViewById(R.id.testTV).asInstanceOf[TextView].setText(str)

将写入文本视图

于 2013-06-11T22:34:26.733 回答