Kong돌이의 코딩이야기

Android Studio 부가 데이터(Extra Data) 정리 본문

코딩이야기/안드로이드

Android Studio 부가 데이터(Extra Data) 정리

Kong돌이 2021. 8. 30. 15:02
728x90

안녕하세요 오늘은 부가 데이터(Extra Data)를 공부하면서 정리를 해보려고 합니다.

 

한 액티비티(Activity)에서 다른 액티비티를 띄울 때 데이터(Data)를 전달해야 하는 경우도 있습니다.

예를 들어 로그인화면에서 로그인 버튼을 눌러 로그인을 성공하면 메뉴 화면으로 아이디 또는 정보를 전달하여 표시해야 하는 경우도 있습니다. 가장 간단한 방법은 별도의 클래스를 만든 다음 그 안에 클래스 변수(static 키워드를 이용해 선언한 변수)를 만들어 두 개의 화면에서 모두 그 변수를 참조하게 하는 방법입니다. 즉, 로그인 화면에서 값을 정하고 메뉴 화면에서 로그인 화면의 변수 값을 참조하면 됩니다.

 

하지만 안드로이드는 다른 앱에서 내가 만든 화면을 띄울 수도 있기 때문에 변수를 공유하는 방식으로 데이터를 전달하는 것이 불가능할 수도 있습니다. 따라서 기본적으로는 액티비티를 띄울 때 전달되는 인텐트 안에 부가 데이터(Extra data)를 넣어 전달하는 방법을 권장합니다.

 

인텐트 안에는 번들(Bundle) 객체가 들어 있는데, 번들 객체는 해시테이블과 유사해서 putExtra와 getOOOExtra 메서드로 데이터를 넣거나 빼낼 수 있습니다.(여기에서 OOO은 기본 자료형의 이름입니다.!!) 예를 들어 문자열을 넣고 싶다면 putExtra메서드를 호출하고 문자열을 다시 빼내고 싶다면 getStringExtra메서드를 이용하면 됩니다!!

 

인텐트 안의 번들 객체에 문자열을 넣었다 빼기

기본적으로 기본 자료형(Primivive Data Type)을 넣었다 뺄 수 있지만 바이트 배열이나 Serializable객체도 넣었다 뺄 수 있습니다. 이렇게 번들 객체 안에 넣은 데이터를 부가 데이터라고 하며 시스템에서는 건드리지 않고 다른 앱 구성 요소로 전달합니다. 번들 안에 문자열이나 정수와 같은 부가 데이터를 넣을 때는 키(key)와 값(Value)을 쌍으로 만들어 넣습니다.

문자열과 정수 그리고 이진 값을 넣거나 뺄 때 사용하는 대표적인 메서드는 다음과 같습니다.

 

[Reference]

 

Intent putEXtra(String name, String value)

Intent putExtra(String name, int value)

Intent putExtra(String name, boolan value)

 

String getStringExtra(String name)

int getIntExtra(String name, int defaultValue)

boolean getBooleanExtra(String neme, boolean defaultValue)

 

getOOO()형태를 가진 메서드는 데이터 값이 없으면 디폴트로 설정한 defaultValue 값이 반환됩니다.

또, 전달하고 싶은 데이터가 기본 자료형이 아니라 객체(Object) 자료형인 경우에는 객체 자체를 전달할 수 없습니다.

객체 데이터는 바이트 배열로 변환하거나 Parcelable 인터페이스는 Serializable과 유사하지만 직렬화 했을 때 크기가 작아 안드로이드 내부의 데이터 전달에 자주 사용됩니다. 이 인터페이스를 사용하면 객체를 직접 번들에 추가하여 데이터를 전송할 때 사용할 수 있습니다. 단, 다음 두 가지 메서드를 모두 구현해야 합니다.

 

[Reference]

 

publid abstract int describeContents()

public abstract void writeToParcel(Parcel dest, int flags)

 

descrbeContents 메서드는 직렬화하려는 객체의 유형을 구분할 때 사용합니다.

여기에서는 단순히 0을 반환하도록 합니다. writeToParcel 메서드는 객체가 가지고 있는 데이터를 Parcel 객체로 만들어주는 역할을 합니다. 이 Parcel 객체는 Bundle 객체처럼 readOOO()와 writeOOO() 형태를 가진 메서드를 제공하므로 기본 데이터 타입을 넣고 확인할 수 있도록 합니다. 위의 두 가지 메서드를 모두 구현 한 다음에는 CREATOR라는 상수를 만들어야 하는데 이 상수는 Parcel 객체로부터 데이터를 읽어 들여 객체를 생성하는 역할을 합니다. 이 객체는 상수로 정의되고 반드시 static final로 선언되어야 합니다.

 

이상으로 밑에 예제 링크와 함께 Android Studio 부가 데이터(Extra Data) 정리 마치도록 하겠습니다!!

 

https://kong-99.tistory.com/entry/Android-Studio-Parcelable-%EA%B0%9D%EC%B2%B4%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EC%95%A1%ED%8B%B0%EB%B9%84%ED%8B%B0-%EA%B0%84-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%A0%84%EB%8B%AC-%EC%98%88%EC%A0%9C

 

Android Studio Parcelable 객체를 이용한 액티비티 간 데이터 전달 예제

안녕하세요 오늘은 Android Studio Parcelable 객체를 이용하여 액티비티 간 데이터 전달하는 예제를 한번 진행해보려고 합니다!! 액티비티 간 데이터 전달은 굉장히 중요하죠! 예를 들어 로그인 후 로

kong-99.tistory.com

 

728x90
반응형
LIST
Comments