跳轉(zhuǎn)傳值

使用 Intent啟動Activity 、啟動Service 以及發(fā)送廣播等場景

顯式 Intent

  val intent = Intent(this, SecondActivity::class.java) 
  startActivity(intent)

隱式 Intent

Intent指定 actioncategory由系統(tǒng)去分析找出合適的Activity去啟動
只有<action>和<category>中的內(nèi)容同時匹配Intent 中指定的action和category時,這個Activity 才能響應(yīng)該Intent 。

  val intent = Intent("com.example.activitytest.ACTION_START")
  intent.addCategory("com.example.activitytest.MY_CATEGORY") 
  startActivity(intent)

傳值

傳值:intent.putExtra("extra_data", data)
取值:val extraData = intent.getStringExtra("extra_data")

反向傳值

1.用startActivityForResult()方法來啟動SecondActivity,startActivityForResult()方法接收兩個參數(shù):第一個參數(shù)還是Intent ;第二個參數(shù)是請求碼,用于在之后的回調(diào)中判斷數(shù)據(jù)的來源。

val intent = Intent(this, SecondActivity::class.java) 
startActivityForResult(intent, 1)

2.在SecondActivity 構(gòu)建了一個Intent 用于傳遞數(shù)據(jù)。把要傳遞的數(shù)據(jù)存放在Intent中,然后調(diào)用了setResult()方法。這個方法專門用于向上一個Activity返回數(shù)據(jù)。setResult()方法接收兩個參數(shù):第一個參數(shù)用于向上一個Activity 返回處理結(jié)果,一般只使用RESULT_OKRESULT_CANCELED這兩個值;第二個參數(shù)則把帶有數(shù)據(jù)的Intent 傳遞回去。最后調(diào)用了finish()方法來銷毀當(dāng)前Activity 。

val intent = Intent() 
intent.putExtra("data_return", "Hello FirstActivity") 
setResult(RESULT_OK, intent) 
finish()
  1. FirstActivity 中重寫onActivityResult()來得到返回的數(shù)據(jù)
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
   super.onActivityResult(requestCode, resultCode, data) 
   when (requestCode) { 
    1 -> if (resultCode == RESULT_OK) { 
    val returnedData = data?.getStringExtra("data_return") 
    Log.d("FirstActivity", "returned data is $returnedData") 
  } 
 } 
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容