iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 8
1
Software Development

高中生Kotlin實作30天系列 第 8

Day 08電阻電流計算機(下) (startActivity)

  • 分享至 

  • xImage
  •  

Method

切換Activity

從 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")
}

Uploading file..._a43iyh8en

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}"
    }
}

實作成果


上一篇
Day07 電阻電流計算機(上)(Spinner)
下一篇
Day 09 打地鼠(上)(GridView)
系列文
高中生Kotlin實作30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言