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());

}
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM