使用AndroidProguardScala设置TextView的Texttext

时间:2013-02-24 10:16:37

标签: android eclipse scala

我有一些使用Java for 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>

2 个答案:

答案 0 :(得分:2)

findViewById可能会返回View,但没有setText方法。由于您未在testText上声明类型,因此编译器推断的类型为View

尝试:

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

以便编译器知道它是TextView,并且setText应该有用。

答案 1 :(得分:0)

val str = "Hi from Scala"
findViewById(R.id.testTV).asInstanceOf[TextView].setText(str)

将写入textview