안드로이드

안드로이드 Bundle 에 Object 객체 보내는 방법 putSerializable, Bundle, setArguments, fragment

알통몬_ 2019. 1. 30. 11:14
반응형


공감 및 댓글은 포스팅 하는데

 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 

도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 

만들어 나가겠습니다^^

 


안드로이드 개발 시 Fragment를 사용하면

Bundle을 많이 사용하게 되는데요.

Bundle args = new Bundle();
args.putString("date", date);

이런 식으로 많이 사용합니다.

만약 유저 정보를 보낸다고 했을 때

이름, 나이, 성별, 가입일, 주소 .... 등등 수십 개의 정보를 보내야 한다면?

args.putString("name", userName)...

이런 식으로 하나하나 다 보내야 할까요?

다행히도 객체를 Bundle에는 객체를 보낼 수 도 있는데요.

args.putSerializable("patientInfo", patientInfo);

putSerializable을 사용하면 객체를 보낼 수 있습니다.

그 전에 객체가 Serializable을 상속받기만 하면요

전 요즘 코틀린으로 개발 중이라 코틀린을 사용했습니다.

data class UserInfo(val name : String, val id : String) : Serializable

위 처럼 클래스에서 Serializable을 상속받아줍니다.


Fragment에서 받아서 사용하는 방법 또한 간단합니다.

Fragment 클래스에는 고맙게도 setArguments 라는 메소드가 있어서

받은 Bundle을 쉽게 사용할 수 있습니다.

override fun setArguments(args: Bundle?) {
patientInfo = args!!.getSerializable("patientInfo") as PatientInfo


}

코틀린에서는 이렇게 사용하면 되고, 자바에서는

@Override
public void setArguments(@org.jetbrains.annotations.Nullable Bundle args) {
assert args != null;
PatientInfo patientInfo = (PatientInfo) args.getSerializable("patientInfo");
}

이렇게 사용하면 됩니다.

어렵지 않죠? 이상입니다.


반응형