從 File>New>Activity>Empty Activity 新增一個空白的Activity,可以看到java資料夾和layout資料夾各增加了一個檔案
Intent
Intent 是用在對其他應用程式元件(Activity、Service、BroadcastReceiver)發出要求的物件。
//由現在的應用程式元件(this代表MainActivity)
//發送請求給Main2Activity
val intent = Intent(this,Main2Activity::class.java)
startActivity()
使用startActivity()
送出Intent,由MainActivity啟動Main2Activity
startActivity(intent)
除了切換Activity,可以利用Intent夾帶資料,傳送給Main2Activity
putExtra()
一個Intent可以夾帶多筆資料,使用putExtra()
可以在Intent中放入多筆型別相同的資料
val intent = Intent(this,Main2Activity::class.java)
i.putExtra("name",resistance)
startActivity(intent)
因為傳送的是Double型態,所以在Main2Activity中要使用getDouble()
取得傳送的資料
//判斷Intent不為空,且有夾帶資料
intent?.extras?.let {
// 取得Intent中的資料
val r = it.getDouble("key")
textView.text = "電阻:$r"
}
Bundle
Bundle可以一次打包多筆不同型別的資料,使用putExtras()
可以將Bundle放入Intent中
//建立Bundle物件
var bundle = Bundle()
//將兩筆資料加入Bundle中
bundle.putDouble("key1", resistance)
bundle.putString("key2", tv_res.text.toString())
val intent = Intent(this, Main2Activity::class.java)
//將Bundle放入Intent中
intent.putExtras(bundle)
startActivity(intent)
在Main2Activity取出Bundle中的資料
var r = 0.0
intent?.extras?.let {
//為了方便使用 把r改成外部變數
r = it.getDouble("key1")
textView.text = it.getString("key2")
}
finish()
使用finish()可以結束現在的應用程式元件
button.setOnClickListener {
finish()
}
使用length()
,確保EditView中的內容不為空
btn_i.setOnClickListener {
if (!(ed_v.length() < 1)) {
val v = ed_v.text.toString().toDouble()
val i = v / r
ed_i.setText("$i")
textView4.text = "功率:${i*v}"
}
}
btn_v.setOnClickListener {
if (!(ed_i.length() < 1)) {
val i = ed_i.text.toString().toDouble()
val v = r*i
ed_v.setText("$v")
textView4.text = "功率:${i*v}"
}
}