[Android 기초] Parcelable 사용 서열 화
Android 직렬 화 대상 방법:
Parcelable 인터페이스 구현 방법 절차:
자바 실 체 는 Parcelable 인 터 페 이 스 를 실현 하고 다음 과 같은 몇 가지 방법 이 필요 합 니 다.
createFromParcel(Parcel in)
// Parcel , Parcelable 。
newArray(int size)
// T, size , (return new T[size]) 。 。
데모 코드 구현
1. Parcelable 인터페이스 구현 Person 클래스 구축
/**
* Created by JerryLiu on 2016/7/21.
*/
public class Person implements Parcelable {
private static final String TAG = "LiuDongBing";
private String userName;
private String passWord;
public Person() {
Log.d(TAG, "Person(): ");
}
public Person(String userName, String passWord) {
Log.d(TAG, "Person() called with: " + "userName = [" + userName + "], passWord = [" + passWord + "]");
this.userName = userName;
this.passWord = passWord;
}
public String getUserName() {
Log.d(TAG, "getUserName: = " + userName);
return userName;
}
public void setUserName(String userName) {
Log.d(TAG, "setUserName: = " + userName);
Log.d(TAG, "setUserName() called with: " + "userName = [" + userName + "]");
this.userName = userName;
}
public String getPassWord() {
Log.d(TAG, "getPassWord: = " + passWord);
return passWord;
}
public void setPassWord(String passWord) {
Log.d(TAG, "setPassWord: = passWord");
this.passWord = passWord;
}
/**
* Describe the kinds of special objects contained in this Parcelable's
* marshalled representation.
*
* @return a bitmask indicating the set of special object types marshalled
* by the Parcelable.
*/
@Override
public int describeContents() {
Log.d(TAG, "describeContents: ");
return 0;
}
/**
* Flatten this object in to a Parcel.
*
* @param dest The Parcel in which the object should be written.
* @param flags Additional flags about how the object should be written.
* May be 0 or {@link #PARCELABLE_WRITE_RETURN_VALUE}.
*/
@Override
public void writeToParcel(Parcel dest, int flags) {
Log.d(TAG, "writeToParcel: = " + flags);
dest.writeString(userName);
dest.writeString(passWord);
}
public static final Parcelable.Creator CREATOR = new Creator() {
@Override
public Person createFromParcel(Parcel source) {
Log.d(TAG, "createFromParcel: ");
Person person = new Person();
person.userName = source.readString();
person.passWord = source.readString();
Log.d(TAG, "createFromParcel: " + "person.userName = " + person.userName
+ "
person.passWord" + person.passWord);
LogUtils.d(person);
return person;
}
@Override
public Person[] newArray(int size) {
Log.d(TAG, "newArray: size = " + size);
return new Person[size];
}
};
}
2. MainActivity 에서 직렬 화
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bundle_btn = (Button) findViewById(R.id.button);
bundle_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(MainActivity.this, SecondActivity.class);
Person person = new Person("LiuDongBing", "abc.1234");
Bundle bundle = new Bundle();
//Parcelable
bundle.putParcelable("person", person);
intent.putExtras(bundle);
Log.d(TAG, "onClick: startActivity(intent)");
startActivity(intent);
}
});
}
3. SecondActivity 에서 역 직렬 화
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
Intent intent = getIntent();
Bundle extras = intent.getExtras();
//Parcelable
Person person = extras.getParcelable("person");
Log.d(TAG, "onCreate: " + "person.getUserName()" + person.getUserName()
+ "
person.getPassWord()" + person.getPassWord());
}
4. 결과 인쇄
D/LiuDongBing: Person() called with: userName = [LiuDongBing], passWord = [abc.1234]
D/LiuDongBing: onClick: startActivity(intent)
D/LiuDongBing: writeToParcel: = 0
D/LiuDongBing: createFromParcel:
D/LiuDongBing: Person():
D/LiuDongBing: createFromParcel: person.userName = LiuDongBing
person.passWord = abc.1234
D/LogUtils-/Person$1.createFromParcel(Person.java:90): Person {CREATOR = {}, TAG = "LiuDongBing", passWord = "abc.1234", userName = "LiuDongBing"}
D/LiuDongBing: getUserName: = LiuDongBing
D/LiuDongBing: getPassWord: = abc.1234
D/LiuDongBing: onCreate: person.getUserName()LiuDongBing
person.getPassWord()abc.1234
원본 코드 연결:https://github.com/JerrryLiu/ParceleableTest
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.