프로그래밍 언어/Android

Intents를 사용하여 한 Android 활동에서 다른 활동으로 객체를 보내는 방법

Rateye 2021. 6. 23. 10:41
728x90
반응형
질문 : Intents를 사용하여 한 Android 활동에서 다른 활동으로 객체를 보내는 방법은 무엇입니까?

Intent putExtra() 메서드를 사용하여 한 Activity 에서 다른 Activity로 사용자 지정 유형의 개체를 어떻게 전달할 수 있습니까?

답변

물체를 그냥 지나가는 경우 Parcelable가 이를 위해 설계되었습니다. 그것은 자바의 네이티브 직렬화를 사용하는 것보다 사용에 조금 더 많은 노력이 필요하지만, 그것의 빠른 방법은 (그리고 나는 평균 방법, 빠른 방법).

문서에서 구현하는 방법에 대한 간단한 예는 다음과 같습니다.

// simple class that just has one member property as an example
public class MyParcelable implements Parcelable {
    private int mData;

    /* everything below here is for implementing Parcelable */

    // 99.9% of the time you can just ignore this
    @Override
    public int describeContents() {
        return 0;
    }

    // write your object's data to the passed-in Parcel
    @Override
    public void writeToParcel(Parcel out, int flags) {
        out.writeInt(mData);
    }

    // this is used to regenerate your object. All Parcelables must have a CREATOR that implements these two methods
    public static final Parcelable.Creator<MyParcelable> CREATOR = new Parcelable.Creator<MyParcelable>() {
        public MyParcelable createFromParcel(Parcel in) {
            return new MyParcelable(in);
        }

        public MyParcelable[] newArray(int size) {
            return new MyParcelable[size];
        }
    };

    // example constructor that takes a Parcel and gives you an object populated with it's values
    private MyParcelable(Parcel in) {
        mData = in.readInt();
    }
}

주어진 Parcel에서 검색 할 필드가 두 개 이상인 경우 입력 한 순서와 동일한 순서 (즉, FIFO 접근 방식)로이를 수행해야합니다.

당신이 당신의 객체가 구현 일단 Parcelable 그것은 당신에 넣어 단지 문제 텐트putExtra () :

Intent i = new Intent();
i.putExtra("name_of_extra", myParcelableObject);

그런 다음 getParcelableExtra ()를 사용하여 다시 가져올 수 있습니다.

Intent i = getIntent();
MyParcelable myParcelableObject = (MyParcelable) i.getParcelableExtra("name_of_extra");

객체 클래스가 Parcelable 및 Serializable을 구현하는 경우 다음 중 하나로 캐스트해야합니다.

i.putExtra("parcelable_extra", (Parcelable) myParcelableObject);
i.putExtra("serializable_extra", (Serializable) myParcelableObject);
출처 : https://stackoverflow.com/questions/2139134/how-to-send-an-object-from-one-android-activity-to-another-using-intents
728x90
반응형