个性化阅读
专注于IT技术分析

Kotlin Android显式Intent

本文概述

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

Android意向主要用于:

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

Android意向类型

Android中有两种类型的意图:

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

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

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

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

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

Kotlin Android显式Intent示例

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

Kotlin Android显式Intent

activity_main.xml

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

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="example.srcmini02.com.kotlinexplicitintent.MainActivity">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:layout_marginTop="8dp"
        android:text="First Activity"
        android:textSize="18sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintHorizontal_bias="0.501"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.172" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:text="Click"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView"
        app:layout_constraintVertical_bias="0.77" />

</android.support.constraint.ConstraintLayout>

MainActivity.kt

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

package example.srcmini02.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文件中, 添加以下代码。

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="example.srcmini02.com.kotlinexplicitintent.SecondActivity">

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:text="SecondActivity"
        android:textSize="18sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.107" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:text="back"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.774" />
</android.support.constraint.ConstraintLayout>

SecondActivity.kt

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

package example.srcmini02.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)
        }
    }
}

输出:

Kotlin Android显式Intent
Kotlin Android显式Intent
赞(0)
未经允许不得转载:srcmini » Kotlin Android显式Intent

评论 抢沙发

评论前必须登录!