Computer >> 컴퓨터 >  >> 프로그래밍 >> Android

안드로이드에서 커스텀 객체를 Parcelable로 만드는 방법 완벽 가이드

개요

이 튜토리얼에서는 안드로이드 앱 개발 시 커스텀 객체(Custom Object)를 Parcelable로 만드는 방법을 단계별로 알아봅니다. Parcelable은 안드로이드에서 객체를 직렬화하여 Intent나 Bundle을 통해 컴포넌트 간에 전달할 때 사용하는 인터페이스입니다.

1단계: 새 프로젝트 생성

Android Studio에서 File → New Project를 선택하고, 필요한 모든 정보를 입력하여 새 프로젝트를 생성합니다.

2단계: 레이아웃 파일 작성

res/layout/activity_main.xml 파일에 아래 코드를 추가합니다.

<?xml version = "1.0" encoding = "utf-8"?>
<LinearLayout xmlns:android = "https://schemas.android.com/apk/res/android"
    xmlns:app = "https://schemas.android.com/apk/res-auto"
    xmlns:tools = "https://schemas.android.com/tools"
    android:layout_width = "match_parent"
    android:gravity = "center"
    android:layout_height = "match_parent"
    tools:context = ".MainActivity"
    android:orientation = "vertical">
    <Button
        android:id = "@+id/parcleObject"
        android:layout_width = "wrap_content"
        android:layout_height = "wrap_content"
        android:layout_alignParentTop = "true"
        android:layout_centerHorizontal = "true"
        android:layout_marginTop = "27dp"
        android:text = "Click here"/>
</LinearLayout>

위 코드에서는 Parcelable 객체의 값을 화면에 보여주기 위한 버튼 뷰를 배치했습니다.

3단계: MainActivity 작성

src/MainActivity.java 파일에 아래 코드를 추가합니다.

package com.example.myapplication;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    parcleObject sample;
    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findViewById(R.id.parcleObject).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                sample = new parcleObject("sairamkrishna Mammahe");
                Toast.makeText(MainActivity.this,sample.getName(),Toast.LENGTH_LONG).show();
            }
        });
    }
}

버튼을 클릭하면 parcleObject 인스턴스를 생성하고, Toast 메시지를 통해 객체의 이름 값을 출력합니다.

4단계: Parcelable 클래스 구현

src/parcleObject.java 파일에 아래 코드를 추가합니다.

package com.example.myapplication;
import android.os.Parcel;
import android.os.Parcelable;

class parcleObject implements Parcelable {
    private String name;
    protected parcleObject(Parcel in) {
        this.name = in.readString();
    }
    public parcleObject(String name){
        this.name = name;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public static final Creator<parcleObject> CREATOR = new Creator<parcleObject>() {
        @Override
        public parcleObject createFromParcel(Parcel in) {
            return new parcleObject(in);
        }
        @Override
        public parcleObject[] newArray(int size) {
            return new parcleObject[size];
        }
    };
    @Override
    public int describeContents() {
        return 0;
    }
    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(this.name);
    }
}

Parcelable 구현 핵심 요소

커스텀 객체를 Parcelable로 만들 때 반드시 구현해야 하는 요소는 다음과 같습니다.

writeToParcel(): 객체의 데이터를 Parcel에 쓰는(직렬화하는) 메서드입니다.
CREATOR: Parcel에서 객체를 다시 생성(역직렬화)하는 정적 필드로, createFromParcel()과 newArray()를 구현해야 합니다.
describeContents(): Parcel에 포함된 특수 객체의 종류를 설명하며, 일반적으로 0을 반환합니다.
Parcel 생성자: Parcel에서 읽어온 데이터로 객체를 복원하는 생성자입니다.

5단계: 애플리케이션 실행

애플리케이션을 실행해 보겠습니다. 실제 안드로이드 기기가 컴퓨터에 연결되어 있다고 가정합니다. Android Studio에서 프로젝트의 액티비티 파일 중 하나를 연 뒤, 툴바의 Run 아이콘을 클릭하세요. 실행 옵션으로 자신의 모바일 기기를 선택하면, 기기에 기본 화면이 표시됩니다.

안드로이드에서 커스텀 객체를 Parcelable로 만드는 방법 완벽 가이드

이제 버튼을 클릭하면 아래와 같은 결과가 화면에 나타납니다.

안드로이드에서 커스텀 객체를 Parcelable로 만드는 방법 완벽 가이드

마무리

이렇게 하면 커스텀 객체를 Parcelable로 만들어 안드로이드 컴포넌트 간에 효율적으로 전달할 수 있습니다. Serializable보다 성능이 뛰어난 Parcelable은 Intent로 객체를 전달하거나 상태를 저장할 때 널리 활용되므로, 안드로이드 개발자라면 꼭 익혀두는 것이 좋습니다.