📜  android 有意图地发送参数 (1)

📅  最后修改于: 2023-12-03 15:29:22.182000             🧑  作者: Mango

Android 有意图地发送参数

在 Android 上,你可以使用 Intent 发送参数。Intent 是一种用于在应用组件之间进行交互的一种基础结构。Intent 可以用于启动活动、启动服务、广播等。

通过 Intent,你可以传递一些额外的信息,这些信息可以是数据、操作或者其他任何类型的信息。在 Intent 中传递参数时需要指定参数名和其对应的值。

发送参数的基本流程
  1. 创建一个 Intent 对象;
  2. 通过 Intent.putExtra() 方法将需要传递的参数添加到 Intent 对象中;
  3. 启动另一个应用组件(如活动、服务、广播等)时将 Intent 对象传递给该组件,其他组件可以通过调用 Intent.getXXXExtra() 方法获取 Intent 所携带的参数。
// 创建 Intent 对象
Intent intent = new Intent(context, SomeActivity.class);

// 添加参数到 Intent 对象中
intent.putExtra("param_name", "param_value");

// 启动活动并传递 Intent 对象
startActivity(intent);
传递基本数据类型参数

可以通过 Intent.putExtra() 方法将基本数据类型的参数添加到 Intent 对象中,并指定参数名和其对应的值。在接收 Intent 对象并通过 Intent.getXXXExtra() 方法获取参数时,需要指定参数名和默认值。

// 添加整型参数到 Intent 对象中
intent.putExtra("int_param", 123);

// 添加字符串参数到 Intent 对象中
intent.putExtra("str_param", "hello");

// 获取整型参数
int intParam = intent.getIntExtra("int_param", 0);

// 获取字符串参数
String strParam = intent.getStringExtra("str_param");
传递自定义对象参数

如果需要传递自定义对象类型的参数,需要使该对象实现 Parcelable 接口或者 Serializable 接口。Parcelable 接口比 Serializable 接口更高效,因此推荐使用 Parcelable 接口。

// 自定义对象实现 Parcelable 接口
public class MyObject implements Parcelable {
    private int value;

    // 实现 Parcelable 接口的方法
    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeInt(value);
    }

    public static final Parcelable.Creator<MyObject> CREATOR = new Parcelable.Creator<MyObject>() {
        @Override
        public MyObject createFromParcel(Parcel source) {
            return new MyObject(source);
        }

        @Override
        public MyObject[] newArray(int size) {
            return new MyObject[size];
        }
    };

    private MyObject(Parcel in) {
        value = in.readInt();
    }
}

// 添加自定义对象参数到 Intent 对象中
MyObject obj = new MyObject();
intent.putExtra("obj_param", obj);

// 获取自定义对象参数
MyObject objParam = intent.getParcelableExtra("obj_param");
总结

通过 Intent 发送参数是 Android 中组件之间交互的重要方式,可以通过 Intent 传递基本数据类型和自定义对象类型的参数。要注意在传递自定义对象类型的参数时,需要使该对象实现 Parcelable 接口或者 Serializable 接口。