1. 程式人生 > >AndroidIntent傳遞類,陣列的兩種方法

AndroidIntent傳遞類,陣列的兩種方法

                                

使用環境:

需要跳轉介面傳遞資料

使用方法:

 intent傳遞類:

第一種: 序列化之後傳遞

類序列化:(遇到class  就 implements Serializable)

public class RectifyInfo implements Serializable{
}

 開始傳遞:

Intent intent = new Intent(getActivity(),RectificationIssuedActivity.class);
Bundle bundle = new Bundle();
bundle.putSerializable("rect",mLists.get(position));//傳入類的物件
intent.putExtras(bundle);
getActivity().startActivity(intent);

  取出資料:

rr = (RectifyInfo.ResultBean) getIntent().getSerializableExtra("rect");

第二種用Parcelable方式傳遞Object

讓bean類整合parcelable(用法請百度)

public class QualityInfo implements Parcelable{
    public QualityInfo(){

    }

    private String inspectionAbbreviation;//private String 組砌方法private String ,
    private String inspectionComments;//private String private String ,
    private String inspectionGrade;//private String 1private String ,
    private String inspectionId;//private String c529c9acb65e43b2a232a5cde3892f14private String ,
    private String inspectionStandardAb;//private String 第5.3.1條private String ,
    private String inspectionStandardall;//private String private String ,
    private String inspectionType;//private String 一般專案private String ,
    private String inspectionValid;//private String 0private String ,
    private String itemId;//private String bfcb91b91a294e718a234f5241f69663private String

    //取出
    protected QualityInfo(Parcel in) {
        inspectionAbbreviation = in.readString();
        inspectionComments = in.readString();
        inspectionGrade = in.readString();
        inspectionId = in.readString();
        inspectionStandardAb = in.readString();
        inspectionStandardall = in.readString();
        inspectionType = in.readString();
        inspectionValid = in.readString();
        itemId = in.readString();
    }

    public static final Creator<QualityInfo> CREATOR = new Creator<QualityInfo>() {
        @Override
        public QualityInfo createFromParcel(Parcel in) {
            return new QualityInfo(in);
        }

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

    public String getInspectionAbbreviation() {
        return inspectionAbbreviation;
    }

    public void setInspectionAbbreviation(String inspectionAbbreviation) {
        this.inspectionAbbreviation = inspectionAbbreviation;
    }

    public String getInspectionComments() {
        return inspectionComments;
    }

    public void setInspectionComments(String inspectionComments) {
        this.inspectionComments = inspectionComments;
    }

    public String getInspectionGrade() {
        return inspectionGrade;
    }

    public void setInspectionGrade(String inspectionGrade) {
        this.inspectionGrade = inspectionGrade;
    }

    public String getInspectionId() {
        return inspectionId;
    }

    public void setInspectionId(String inspectionId) {
        this.inspectionId = inspectionId;
    }

    public String getInspectionStandardAb() {
        return inspectionStandardAb;
    }

    public void setInspectionStandardAb(String inspectionStandardAb) {
        this.inspectionStandardAb = inspectionStandardAb;
    }

    public String getInspectionStandardall() {
        return inspectionStandardall;
    }

    public void setInspectionStandardall(String inspectionStandardall) {
        this.inspectionStandardall = inspectionStandardall;
    }

    public String getInspectionType() {
        return inspectionType;
    }

    public void setInspectionType(String inspectionType) {
        this.inspectionType = inspectionType;
    }

    public String getInspectionValid() {
        return inspectionValid;
    }

    public void setInspectionValid(String inspectionValid) {
        this.inspectionValid = inspectionValid;
    }

    public String getItemId() {
        return itemId;
    }

    public void setItemId(String itemId) {
        this.itemId = itemId;
    }
    //這個方法不需要修改
    @Override
    public int describeContents() {
        return 0;
    }
    //寫入
    @Override
    public void writeToParcel(Parcel parcel, int i) {
        parcel.writeString(inspectionAbbreviation);
        parcel.writeString(inspectionComments);
        parcel.writeString(inspectionGrade);
        parcel.writeString(inspectionId);
        parcel.writeString(inspectionStandardAb);
        parcel.writeString(inspectionStandardall);
        parcel.writeString(inspectionType);
        parcel.writeString(inspectionValid);
        parcel.writeString(itemId);
    }

開始傳遞:

(這一種需要做的程式碼比implements Ser………做的工作稍微多了一點點,但是方法更顯得獨一無二)

ParInfo parInfo = new ParInfo(name, website, weibo);
Intent intent = new Intent();
Bundle bundle = new Bundle();
bundle.putParcelable("parinfo", parInfo);// 這裡呼叫了writeToParcel方法,向dest寫資料  
intent.setClass(MainActivity.this, ResultActivity.class);
intent.putExtras(bundle);
startActivity(intent);

取出資料:

ParInfo parInfo = (ParInfo) getIntent().getParcelableExtra("parinfo");
//這裡呼叫了UsercreateFromParcel方法,返回

**********************************************************************************************************

Activity中傳遞陣列     序列 intent

ArrayList<SerInfo> listObj = new ArrayList<SerInfo>();
SerInfo serInfo1 = new SerInfo(name, website, weibo);
SerInfo serInfo2 = new SerInfo(name, website, weibo);
listObj.add(serInfo1);
listObj.add(serInfo2);
Intent intent = new Intent();
intent.setClass(MainActivity.this, ResultActivity.class);
intent.putExtra("listobj", (Serializable) listObj);  
startActivity(intent);

取值的方法:

List<SerInfo> serInfos = (List<SerInfo>) getIntent().getSerializableExtra("listobj"); 

***********************************************************************************************************************************

Activity和fragment傳遞資料:

 傳遞基本型別資料:

Fragment fragment1 = new RectifySecondFragment(); 
Bundle bundle1 = new Bundle(); 
bundle1.putString(BUNDLE_STR,"待下發"); 
fragment1.setArguments(bundle1);

取出方法:

String argument = getArguments().getString(BUNDLE_STR);

傳遞陣列:

Fragment fragment = new RectifyFragment();
Bundle b1 = new Bundle();
if (0 == position) {
    LogUtil.e("activity傳值:"+ rr.size() + "條");
    b1.putSerializable(INTENTN_MODEL, (Serializable) list0);
} else if (1 == position) {
    LogUtil.e("activity傳值:"+ rr.size() + "條");
    b1.putSerializable(INTENTN_MODEL, (Serializable) list1);
}
b1.putInt(INTENTN_ID, position);
fragment.setArguments(b1);

取出:

mLists = (List<RectifyInfo.ResultBean>) getArguments().getSerializable(INTENTN_MODEL);

總結:

  1 bean類序列化以後,可以存類和列表。

  2 通過intent存取和通過arguments存取方法差不多。

關於傳遞資料這方面,若有不懂,請聯絡:

QQ:88627109

phone:15515291707