AndroidIntent傳遞類,陣列的兩種方法
阿新 • • 發佈:2019-02-09
使用環境:
需要跳轉介面傳遞資料
使用方法:
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存取方法差不多。