다음 액티비티에서 그 이미지를 가지고 처리해줄게 있거든요..
어떤식으로 넘기고 다음 액티비티에선 어떻게 받나요?
안드로이드 프로그래밍을 하다보면 Intent 를 많이 사용하게 됩니다. 그래서 Intent 를 통해 데이터를 넘겨야 하는 경우도 많이 생기는데요. 데이터가
단순히 String이나 int라면 걱정이 없습니다. 그러나 Class 변수인 데이터를 넘겨야 하는 경우도 생기게 됩니다. 그럴 때 여기서 설명드릴 방법을 사용 할 수 있습니다.
1. 넘기고자 하는 Class에 implements
Parcelable 를 추가한다.
ex) public class Info
implements Parcelable
2. public Info(Parcel src) 생성자를 구현한다.
구현은 mID = src.readInt(); 와 같은 방식으로 src로 들어온 데이터를 클레스 변수에 채워 넣어줘야 합니다. Info
Class안에 Class변수가 있다면 다음과 같이 ClassLoader을
사용해서 데이터를 넣어줍니다.
ex) mTime = Date.class.cast(src.readValue(Date.class.getClassLoader()));
mID = src.readInt();
3. public void writeToParcel(Parcel arg0, int arg1) 함수를 구현 합니다.
여기서는 arg0에 넘길 데이터를 write 해줘야 합니다. 2번과 같이 예를 들면 arg0.writeInt(mID); 이렇게 사용하면 됩니다. Class변수인
경우에는 arg0.writeValue(mTime); 과 같이 해주면 됩니다.
ex) arg0.writeValue(mTime);
arg0.writeInt(mID);
4. 아래와 같은
코드를 추가합니다.
public
static final Parcelable.Creator<Info> CREATOR =
new Parcelable.Creator<Info>()
{
public InfocreateFromParcel(Parcel source) {
return new Info(source);
}
public Info[] newArray(int size) {
return new Info[size];
}
};
Info 부분은
원하시는 ClassName으로 수정하시면 됩니다.
위와 같이 코딩을 다 했다면 intent.putExtra("Info",
mInfo); 와 같이 Class 변수를 넣더라도 데이터 전송이 정상적으로 성공할 것입니다.
5. 데이터를 받는 쪽에서는 mInfo =
intent.getParcelableExtra("Info"); 와 같이 받으면 됩니다. 만약에 ArrayClass<Class>를 받게 된다면 mInfoList =
intent.getParcelableArrayListExtra("InfoList"); 와 같이 받으면 됩니다.



