📜  Kotlin Android显式意图

📅  最后修改于: 2021-01-05 08:19:49             🧑  作者: Mango

Kotlin Android明确意图

Android Intent是一个消息传递对象,用于请求另一个应用程序组件执行操作。 Intent可以通过多种方式(例如,启动活动,启动服务,交付广播接收器等)促进用户与应用程序组件进行通信。

Android意向主要用于:

  • 启动服务
  • 发起活动
  • 显示网页
  • 显示联系人列表
  • 广播消息
  • 拨打电话等

Android意向类型

Android中有两种类型的意图:

明确意图:此意图满足应用程序组件内的请求。它采用我们要启动的活动或服务的完全限定的类名。

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

隐式意图:此意图未指定组件名称。它调用另一个应用程序的组件来处理它。

intent = Intent(Intent.ACTION_VIEW)
intent.setData(Uri.parse("https://www.javatpoint.com/"))
startActivity(intent)

intent= Intent(Intent.ACTION_VIEW, Uri.parse("https://www.javatpoint.com/"))
startActivity(intent)

Kotlin Android明确意图示例

在此示例中,我们将使用显式意图从另一个活动类调用另一个活动类。使用意图,我们将数据从第一个活动类发送到第二个活动类。第二活动类获取此数据并将其显示在敬酒消息中。

activity_main.xml

在activity_main.xml中添加以下代码。




    

    

MainActivity.kt

在MainActivity.kt类中添加以下代码。在此类中,我们将创建Intent类的实例,并调用组件活动类SecondActivity.kt。 Intent类的putExtra(key,value)方法将数据发送到SecondActivity.kt类。 startActivity()方法启动Intent。

package example.javatpoint.com.kotlinexplicitintent

import android.content.Intent
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {
    val id:Int = 10
    val language:String = "kotlin"
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        button.setOnClickListener() {
            intent = Intent(this, SecondActivity::class.java)
            intent.putExtra("id_value", id)
            intent.putExtra("language_value", language)
            startActivity(intent)
        }
    }
}

创建另一个名为SecondActivity的活动类。

second_activity.xml

在second_activity.xml文件中,添加以下代码。




    

    

SecondActivity.kt

在SecondActivity.kt类中添加以下代码。在此类中,我们通过使用intent.extras在Bundle类上创建实例并在Toast消息中显示数据来接收意图数据。通过单击按钮,我们正在调用Intent来调用MainActivity.kt类。

package example.javatpoint.com.kotlinexplicitintent

import android.content.Intent
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast
import kotlinx.android.synthetic.main.activity_second.*

class SecondActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_second)

        val bundle:Bundle = intent.extras
        val id = bundle.get("id_value")
        val language = bundle.get("language_value")
        Toast.makeText(applicationContext,id.toString()+" "+language,Toast.LENGTH_LONG).show()
        button2.setOnClickListener(){
            intent = Intent(this,MainActivity::class.java)
            startActivity(intent)
        }
    }
}

输出: