Android高级技巧-intent传递对象

一、使用intent传递对象

(1)使用serializable接口

persion类

package com.example.jixujinjie;

import java.io.Serializable;

/**
 * Created by 海绵宝宝 on 2019/4/25.
 */

public class Persion  implements Serializable{//intent不允许传递对象类所以我们把他序列化,继承Serializab
    private int age;
    private String name;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

MainActivity中使用Intent传值

public void onClick(View v) {
                Persion persion=new Persion();
                persion.setAge(18);
                persion.setName("王怀宇");
                Intent intent=new Intent(MainActivity.this,Main2Activity.class);
                intent.putExtra("persion_mes",persion);
                startActivity(intent);
            }

Mian2Activity中接受

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        Persion persion=(Persion)getIntent().getSerializableExtra("persion_mes");
        TextView textView1=(TextView)findViewById(R.id.T1);
        TextView textView2=(TextView)findViewById(R.id.T2);
        textView1.setText("姓名:"+persion.getName());
        textView2.setText("年龄:"+persion.getAge());

    }

(2)使用parcelable方式

persion类

package com.example.jixujinjie;

import android.os.Parcel;
import android.os.Parcelable;

import java.io.Serializable;

/**
 * Created by 海绵宝宝 on 2019/4/25.
 */

public class Persion  implements Parcelable{//继承Parcelable
    private int age;
    private String name;
    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    //writeToParcel和describeContents是继承Parcelabel的必须重写的函数
    @Override
    public int describeContents() {
        return 0;
    }
  //在writeToParcel将类的属性写入
    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(name);
        dest.writeInt(age);
    }
    //创建一个Creator接口的实现,createFromParcel中将之前写入的取出,注意顺序和之前一致
    public static final Parcelable.Creator<Persion> CREATOR=new Parcelable.Creator<Persion>(){
        @Override
        public Persion createFromParcel(Parcel source) {
            Persion persion=new Persion();
            persion.name=source.readString();
            persion.age=source.readInt();
            return  persion;
        }

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

}

Main2Activity.java

package com.example.jixujinjie;

import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.TextView;

public class Main2Activity extends AppCompatActivity {

    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main2);        //获取方式换成getParcelableExtra        Persion persion=(Persion)getIntent().getParcelableExtra("persion_mes");        TextView textView1=(TextView)findViewById(R.id.T1);        TextView textView2=(TextView)findViewById(R.id.T2);        textView1.setText("姓名:"+persion.getName());        textView2.setText("年龄:"+persion.getAge());

    }}

原文地址:https://www.cnblogs.com/837634902why/p/10771871.html

时间: 2024-10-08 23:23:44

Android高级技巧-intent传递对象的相关文章

android#使用Intent传递对象

参考自<第一行代码>——郭霖 Intent的用法相信你已经比较熟悉了,我们可以借助它来启动活动.发送广播.启动服务等.在进行上述操作的时候,我们还可以在Intent中添加一些附加数据,以达到传值的效果,比如在FirstActivity中添加如下代码: Intent intent = new Intent(FirstActivity.this, SecondActivity.class); intent.putExtra("string_data", "hello&

Android高手进阶教程(十七)之---Android中Intent传递对象的两种方法(Serializable,Parcelable)!

[转][原文] 大家好,好久不见,今天要给大家讲一下Android中Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object);另一种是Bundle.putParcelable(Key, Object);当然这些Object是有一定的条件的,前者是实现了Serializable接口,而后者是实现了Parcelable接口,为了让大家更容易理解我还是照常写了一个简单的Demo,大家就一步一步跟我来吧! 第一步:新建一个andr

Android中Intent传递对象的两种方法(Serializable,Parcelable)

今天要给大家讲一下Android中 Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object);另一种是 Bundle.putParcelable(Key, Object);当然这些Object是有一定的条件的,前者是实现了Serializable接口,而后者是实现了Parcelable接口,为了让大 家更容易理解我还是照常写了一个简单的Demo,大家就一步一步跟我来吧! 第一步:新建一个Android工程命名为Object

(六十四)Android中Intent传递对象的两种方法(Serializable,Parcelable)

转载自:http://blog.csdn.net/android_tutor/article/details/5740845 大家好,好久不见,今天要给大家讲一下Android中Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object);另一种是Bundle.putParcelable(Key, Object);当然这些Object是有一定的条件的,前者是实现了Serializable接口,而后者是实现了Parcelable

Android高手之路之Android中Intent传递对象的两种方法Serializable,Parcelable

注:本文改编自Android_Tutor的文章,原文地址:http://blog.csdn.net/android_tutor/article/details/5740845 Android中的传递有两个方法,一个是Serializable,另一个是Parcelable. Serializable是J2SE本身就支持的.而Parcelable是Android所特有的. 二者的使用场景和区别: 1)在使用内存的时候,Parcelable比Serializable性能高,所以推荐使用Parcelab

[转]Android中Intent传递对象的两种方法(Serializable,Parcelable)

http://blog.csdn.net/xyz_lmn/article/details/5908355 今天要给大家讲一下Android中Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object);另一种是Bundle.putParcelable(Key, Object);当然这些Object是有一定的条件的,前者是实现了Serializable接口,而后者是实现了Parcelable接口,为了让大家更容易理解我还是照常写

【转】Android中intent传递对象和Bundle的用法

原文网址:http://blog.csdn.net/lixiang0522/article/details/8642202 android中的组件间传递的对象一般实现Parcelable接口,当然也可以使用java的Serializable接口,前者是android专门设计的,效率更高,下面我们就来实现一个Parcelabel. 1. 创建一个类实现Parcelable接口,具体实现如下: [java] view plain copy package com.hebaijun.testparce

Intent传递对象的几种方式

原创文章,转载请注明 http://blog.csdn.net/leejizhou/article/details/51105060 李济洲的博客 Intent的用法相信你已经比较熟悉了,Intent可以用来启动Activity,Service等等,同时我们也可以通过Intent来进行传递数据,比如以下代码 Intent intent=new Intent(MainActivity.this,OtherActivity.class); intent.putExtra("name",&q

Android 通过 Intent 传递类对象

Android中Intent传递类对象提供了两种方式一种是 通过实现Serializable接口传递对象,一种是通过实现Parcelable接口传递对象. 要求被传递的对象必须实现上述2种接口中的一种才能通过Intent直接传递. Intent中传递这2种对象的方法: Bundle.putSerializable(Key,Object); //实现Serializable接口的对象 Bundle.putParcelable(Key, Object); //实现Parcelable接口的对象 以下