Kotlin startActivity跳轉(zhuǎn)Activity實(shí)現(xiàn)流程詳解
從一個(gè)Activity跳到另一個(gè)Activity 在編寫安卓代碼是最常見的事情了。我們不可能在一個(gè)頁面中,把所有的事情都做完。
在kotlin中跳轉(zhuǎn)的程序也比較簡單,跟java差不多。如果熟悉java代碼的話,只需要把代碼改變過來而已。
帶參數(shù)的調(diào)整
從一個(gè)Activity跳到另一個(gè)Activity 中,如同調(diào)用函數(shù)一樣,可以把數(shù)據(jù)傳遞給另外的Activity中,Activity在接受到這個(gè)數(shù)據(jù)后,可以根據(jù)數(shù)據(jù)的情況進(jìn)行相應(yīng)的處理操作。
對于跳轉(zhuǎn)Activity ,android 中使用的是 startActivity ,在startActivity 的時(shí)候可以傳遞進(jìn)去一個(gè)Intent,這個(gè)Intent可以把要傳遞的Activity和參數(shù)都塞進(jìn)去,使用的方法如下:
val sdf = SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
var intent:Intent = Intent(applicationContext,MainActivity2::class.java)
intent.putExtra("request_time", sdf.format(Date()))
startActivity(intent)
這里我們從MainActivity,跳到 MainActivity2中去,我們傳遞的字段為request_time,在intent中用putExtra放入。
在 MainActivity2 中直接用intent 的getStringExtra 來取得相關(guān)的字段。
tv_activity.setText(intent.getStringExtra("request_time"))
自定義數(shù)據(jù)傳輸
大多數(shù),我們不僅僅只是想傳遞一個(gè) 基礎(chǔ)類型的數(shù)據(jù),對于自定義的類或者數(shù)據(jù)也是可以做得到的,這點(diǎn)Kotlin 看起來會(huì)簡單多了,特別是創(chuàng)建Parcelable。
創(chuàng)建一個(gè)自定義數(shù)據(jù)類型:
@Parcelize
data class MessageInfo(val content:String,val sent_text:String):Parcelable
{
}
@Parcelize注解 幫我們把Parcelize的接口都實(shí)現(xiàn)了。
傳遞數(shù)據(jù)類型,啟動(dòng)相關(guān)的頁面:
btn_activity1.setOnClickListener{
val sdf = SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
var message:MessageInfo = MessageInfo("hello MainActivity2",sdf.format(Date()))
var intent:Intent = Intent(applicationContext,MainActivity2::class.java)
intent.putParcelableArrayListExtra("request", arrayListOf(message))
startActivity(intent)
}
使用putParcelableArrayListExtra 把相關(guān)的數(shù)據(jù)放入。接收端同樣的來接收數(shù)據(jù)類型:
var messages = intent.getParcelableArrayListExtra<MessageInfo>("request")startActivityForResult
在跳轉(zhuǎn)后的頁面,如果在跳轉(zhuǎn)回去的時(shí)候,也可以設(shè)置相應(yīng)的回調(diào)參數(shù),和回調(diào)狀態(tài)值。在startActivity 的時(shí)候,換為startActivityForResult,重載onActivityResult 的方法,就可以得到返回的數(shù)值。
btn_activity2.setOnClickListener {
var intent:Intent = Intent(applicationContext,MainActivity2::class.java)
startActivityForResult(intent,9)
}
重載onActivityResult方法,等待返回結(jié)果:
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
}
}
在 MainActivity2頁面中,用Intent的方式來跳回原來的頁面。
btn_activity20.setOnClickListener {
var intent: Intent = Intent()
setResult(0,intent)
this.finish()
}小結(jié)
Activityandroid 四大組件之一,后面其他的組件還會(huì)一一的進(jìn)行介紹,Activity 其實(shí)有很多東西可以學(xué)習(xí),特別是看看他的源代碼,會(huì)發(fā)現(xiàn)很多可以用的技巧,但是還是得先學(xué)會(huì)怎么使用Activity,這個(gè)才是基礎(chǔ),這里僅僅介紹了跳轉(zhuǎn)的用法,其他的后面還會(huì)進(jìn)行介紹。
到此這篇關(guān)于Kotlin startActivity跳轉(zhuǎn)Activity實(shí)現(xiàn)流程詳解的文章就介紹到這了,更多相關(guān)Kotlin startActivity跳轉(zhuǎn)Activity內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Android startActivityForResult實(shí)例詳解
- android開發(fā)教程之startActivityForResult使用方法
- 基于android startActivityForResult的學(xué)習(xí)心得總結(jié)
- 關(guān)于Android Activity之間跳轉(zhuǎn)問題(Intent)
- Android Activity活動(dòng)頁面跳轉(zhuǎn)與頁面?zhèn)髦?/a>
- Android activity實(shí)現(xiàn)延時(shí)跳轉(zhuǎn)功能
- Android Activity的跳轉(zhuǎn)與傳值詳解
相關(guān)文章
Android 完全退出當(dāng)前應(yīng)用程序的四種方法
Android程序有很多Activity,比如說主窗口A,調(diào)用了子窗口B,如果在B中直接finish(), 接下里顯示的是A。在B中如何關(guān)閉整個(gè)Android應(yīng)用程序呢?本人總結(jié)了幾種比較簡單的實(shí)現(xiàn)方法2016-02-02
Flutter實(shí)現(xiàn)仿京東商品詳情底部操作欄
這篇文章主要為大家詳細(xì)介紹了Flutter如何仿京東實(shí)現(xiàn)商品詳情底部操作欄,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解一下2023-06-06
Android樣式的開發(fā):layer-list實(shí)例詳解
本文主要介紹Android樣式開發(fā)layer-list,這里整理了詳細(xì)的資料,及簡單示例代碼有興趣的小伙伴可以參考下2016-09-09
Flutter懸浮按鈕FloatingActionButton使用詳解
本文主要介紹了Flutter懸浮按鈕FloatingActionButton使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-07-07
Android gradle打包并自動(dòng)上傳的方法
本篇文章主要介紹了Android gradle打包并自動(dòng)上傳的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-09-09

