Bundle 로 Object, ArrayList 넘기기 예제 입니다.


Intent를 사용하실 경우에는 아래와 같이 사용하며

// 줄때
Intent intent = new Intent();
Bundle bundle = new Bundle();
bundle.putSerializable("Obj", item);   // Object 넘기기
bundle.putParcelableArrayList("list", (ArrayList<? extends Parcelable>) list); // list 넘기기
intent.putExtras(bundle);

// 받을때
Bundle bundle = getIntent().getExtras();
bundle.getSerializable("Obj");
bundle.getParcelableArrayList("list");

Fragment를 통한 사용은 아래와 같이 사용하시면 됩니다.

// 줄때
Fragment f = new Fragment();
Bundle bundle = new Bundle();
bundle.putSerializable("Obj", item);   // Object 넘기기
bundle.putParcelableArrayList("list", (ArrayList<? extends Parcelable>) list); // list 넘기기
f.setArguments(bundle);

// 받을때
Bundle bundle = getArguments();
bundle.getSerializable("Obj");
bundle.getParcelableArrayList("list");


Java 사용 예제

(Serializable)Item 클래스의 코드입니다.

import java.io.Serializable;

public class Item implements Serializable {

    public int index;
    public String address; // 주소
    public String title;   // 제목

    public Item(int index, String address, String title) {
        this.index = index;
        this.address = address;
        this.title = title;
    }
}

(Parcelable)Item2 클래스의 코드입니다.

import android.os.Parcel;
import android.os.Parcelable;

public class Item2 implements Parcelable {

    public int index;
    public String address; // 주소
    public String title;   // 제목

    public Item2(int index, String address, String title) {
        this.index = index;
        this.address = address;
        this.title = title;
    }

    public Item2(Parcel in) {
        index = in.readInt();
        address = in.readString();
        title = in.readString();
    }

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

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

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeInt(index);
        dest.writeString(address);
        dest.writeString(title);
    }
}

보내는 부분의 Java 코드입니다.

Fragment f = new Fragment();
Bundle bundle = new Bundle();
bundle.putInt("id", 1122);

Item item = new Item(123, "abc", "가나다");
// Object 넘기기
bundle.putSerializable("item", item);   

List<Item2> list = new ArrayList<>();
list.add(new Item2(222, "ddd", "다다다"));
list.add(new Item2(223, "eee", "다다다"));
list.add(new Item2(224, "ddd", "다다다"));
// 리스트 넘기기
bundle.putParcelableArrayList("list", (ArrayList<? extends Parcelable>) list);

f.setArguments(bundle);

받는 부분의 Java 코드입니다.

Bundle bundle = getArguments();
int id = bundle.getInt("id");
Item item = (Item) bundle.getSerializable("item");
List<Item2> item2 = bundle.getParcelableArrayList("list");

Log.v("test","id : "+id);
Log.w("test","item : "+item.index+" , "+item.address+" , "+item.title);
Log.d("test","item2 : "+item2.size());
for(Item2 it : item2)
	Log.i("test","it : "+it.index+" , "+it.address+" , "+it.title);

결과 화면





+ Recent posts