手机上的 Scala:使用 Android、Scala 和 Eclipse 创建移动应用程序
2009-12-25 00:00:00 来源:WEB开发网视图背后的代码
解释创建 UI 的 Scala 代码的最简单方式是先看看代码,然后走查一遍。对于任何应用程序,都是在应用程序的 AndroidManifest.xml 文件中定义应用程序的默认活动。任何 UI 背后都有一个 Activity 类,默认的 Activity 定义当应用程序初次装载时执行的 Activity 类。对于像本文这样简单的应用程序,有一个 Converter 类,清单 4 中显示了它的源代码。
清单 4. Converter 活动类class Converter extends Activity{
import ConverterHelper._
private[this] var amountValue:EditText = null
private[this] var uom:Spinner= null
private[this] var convertButton:Button = null
private[this] var resultValue:TextView = null
override def onCreate(savedInstanceState:Bundle){
super.onCreate(savedInstanceState)
setContentView(R.layout.main)
uom = findViewById(R.id.uom_value).asInstanceOf[Spinner]
this.setUomChoice(ENGLISH)
amountValue = findViewById(R.id.amount).asInstanceOf[EditText]
convertButton = findViewById(R.id.convert_button).asInstanceOf[Button]
resultValue = findViewById(R.id.result_value).asInstanceOf[TextView]
convertButton.setOnClickListener( () => {
val unit = uom.getSelectedItem.asInstanceOf[String]
val amount = parseDouble(amountValue.getText.toString)
val result = UnitsConverter.convert(Measurement(unit,amount))
resultValue.setText(result)
})
}
override def onCreateOptionsMenu(menu:Menu) = {
super.onCreateOptionsMenu(menu)
menu.add(NONE, 0, 0, R.string.english_units)
menu.add(NONE, 1, 1, R.string.metric_units)
true
}
override def onMenuItemSelected(featureId:Int, item:MenuItem) = {
super.onMenuItemSelected(featureId, item)
setUomChoice(if (item.getItemId == 1) METRIC else ENGLISH)
true
}
private
def setUomChoice(unitOfMeasure:UnitsSystem){
if (uom == null){
uom = findViewById(R.id.uom_value).asInstanceOf[Spinner]
}
val arrayId = unitOfMeasure match {
case METRIC => R.array.metric_units
case _ => R.array.english_units
}
val units = new ArrayAdapter[String](this, R.layout.spinner_view,
getResources.getStringArray(arrayId))
uom.setAdapter(units)
}
}
更多精彩
赞助商链接