Develop/Android

[Android] Activity 전환 시 객체 전달하기! : Parcelable, Serializable

안다희 2019. 1. 6. 23:11
728x90

https://hashcode.co.kr/questions/882/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C%EC%97%90%EC%84%9C-parcelable%EC%9D%B4-%EB%AD%94%EC%A7%80-%EC%9E%90%EC%84%B8%ED%9E%88-%EC%84%A4%EB%AA%85%ED%95%B4%EC%A3%BC%EC%84%B8%EC%9A%94

Parcelable????



https://developer88.tistory.com/64


parcelable은 implements ~ 

override method 하고

getPar~~ 똑같이 하면 됨 근데 이게 속도 더 빠르대



TagNames라는 클래스가 있다.

package org.techtown.just;

import java.io.Serializable;

public class TagNames implements Serializable {
private String[] tags = {"행복", "슬픔", "힐링"};
private int[] tagIndex;

public String[] getTags() { return tags; }
public int[] getTagIndex() { return tagIndex; }

public void setTagIndex(int i) {
tagIndex[i] = 1;
}

public TagNames() {
tagIndex = new int[tags.length];

for (int i = 0; i < tags.length; i++)
tagIndex[i] = 0;
}

} 



Activity를 전환할 때 이 tagNmaes 객체를 전달하고 싶으면

1. TagNames class는 Serializable을 implements 한다. (위에 빨간 글씨)

2. 

Intent intent = new Intent(this, RecommendDetailActivity.class);
intent.putExtra("tagNames", tagNames);

startActivity(intent); 


위처럼 intent.putExtra(전달name, 전달할 객체); 를 써준다.


3. 이 intent를 받는 액티비티에서는


Intent intent = getIntent();

TagNames tagNames = (TagNames) intent.getSerializableExtra("tagNames"); 


이렇게 intent.getSerializableExtra(전달name); 으로 받는다.


** 형변환은 필수! (TagNames) 처럼!! 안그럼 빨간줄 생김




123단계만 잘 따라하면 extra로 객체도 전달하기 성공!!

출처: https://mingos-habitat.tistory.com/34 [밍고의서식지:티스토리]