美文网首页
Intent的使用

Intent的使用

作者: 别看后面有人 | 来源:发表于2021-06-17 22:54 被阅读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")
                }
            }
        }
    

    相关文章

      网友评论

          本文标题:Intent的使用

          本文链接:https://www.haomeiwen.com/subject/nclcyltx.html