Intent的使用

2021-06-17  本文已影响0人  别看后面有人

一、Intent在activity之间的使用
Intent是Android程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同的组件之间传递数据。
在Activity的启动中可以分为两种:显式Intent和隐式Intent
1.显式Intent

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

2、隐式Intent
在第二个activity的清单文件中定义action和category

 <activity
            android:name=".SecondActivity"
            android:label="@string/title_activity_second"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="com.app.activitytest.ACTION_START"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
   </activity>

在action中指明当前activity可以响应com.app.activitytest.ACTION_START这个action需要和category匹配才能使用,android.intent.category.DEFAULT是一种默认的category,在调用startActivity()方法的时候会自动将这个category添加Intent中

 button.setOnClickListener {
            val intent=Intent("com.app.activitytest.ACTION_START")
            startActivity(intent)
  }

3.向下一个activity传递数据

button.setOnClickListener {
            val text="hello first"
            val intent=Intent(this,SecondActivity::class.java)
            intent.putExtra("extra_data",text)
            startActivity(intent)
}

接收代码:

 val extraData=intent.getStringExtra("extra_data")
 Log.d("second","get result $extraData")

4、返回数据给上一个Activity
返回上一个activity只需要按一下back键,或者代码通过finish实现,启动activity还有一个startActivityForResult()方法,

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

第二个activity代码:

   button2.setOnClickListener {
            val intent=Intent()
            intent.putExtra("data_result","hell0 first")
            setResult(Activity.RESULT_OK,intent)
            finish()
        }

在第一个activity中重写onActivityResult()方法

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        
        when(requestCode){
            1 -> if (resultCode== Activity.RESULT_OK){
                val resultData=data?.getStringExtra("data_result")
                Log.d("result", "onActivityResult: $resultData")
            }
        }
    }
上一篇下一篇

猜你喜欢

热点阅读