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
看起來會簡單多了,特別是創(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ù)類型,啟動相關(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é)
Activity
android 四大組件之一,后面其他的組件還會一一的進(jìn)行介紹,Activity
其實(shí)有很多東西可以學(xué)習(xí),特別是看看他的源代碼,會發(fā)現(xiàn)很多可以用的技巧,但是還是得先學(xué)會怎么使用Activity
,這個(gè)才是基礎(chǔ),這里僅僅介紹了跳轉(zhuǎn)的用法,其他的后面還會進(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活動頁面跳轉(zhuǎn)與頁面?zhèn)髦?/a>
- Android activity實(shí)現(xiàn)延時(shí)跳轉(zhuǎn)功能
- Android Activity的跳轉(zhuǎn)與傳值詳解
相關(guān)文章
Android Studio多渠道打包、自定義打包APK名稱
Android Studio為我們提供了簡便的方法,可以多渠道打包,一次打包所有的渠道包。這篇文章主要介紹了Android Studio多渠道打包、自定義打包APK名稱,需要的朋友可以參考下2018-01-01詳解Android的Splash啟動圖的兩種動態(tài)切換方式
本篇文章主要介紹了詳解Android的Splash啟動圖的兩種動態(tài)切換方式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06BootStrapValidator與My97日期校驗(yàn)的實(shí)例代碼
這篇文章給大家介紹了bootstrapvalidator與my97日期校驗(yàn)的實(shí)例代碼,代碼簡單易懂,非常不錯,具有參考借鑒價(jià)值,需要的朋友參考下吧2017-01-01Android優(yōu)化方案之Fragment的懶加載實(shí)現(xiàn)代碼
本篇文章主要介紹了Android優(yōu)化方案之Fragment的懶加載實(shí)現(xiàn)代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-03-03Android camera實(shí)時(shí)預(yù)覽 實(shí)時(shí)處理,人臉識別示例
本篇文章主要介紹了Android camera實(shí)時(shí)預(yù)覽 實(shí)時(shí)處理,面部認(rèn)證示例,具有一定的參考價(jià)值,有興趣的可以了解一下。2017-01-01android studio2.3如何編譯動態(tài)庫的過程詳解
這篇文章主要給大家介紹了關(guān)于android studio 2.3如何編譯動態(tài)庫的過程,文中通過示例代碼介紹的非常詳細(xì),對各位Android開發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-08-08android TextView設(shè)置中文字體加粗實(shí)現(xiàn)方法
android TextView設(shè)置中文字體加粗如何實(shí)現(xiàn),接下來介紹實(shí)現(xiàn)方法,有需要的朋友可以參考下2013-01-01Android開發(fā)之Kotlin委托的原理與使用詳解
我們常用的委托模式怎么使用?在?Java?語言中需要我們手動的實(shí)現(xiàn),而在?Kotlin?語言中直接通過關(guān)鍵字?by?就可以實(shí)現(xiàn)委托,下面我們就一起看看不同種類的委托使用以及在?Android?常見的一些場景中的使用2023-03-03