티스토리 뷰
액티비티간 원시적 데이터형식들 전달은 직설적입니다, boolean,strings,integers 등 어떤 형식이라도 넣고 intent.putExtra()를 사용하면 됩니다. 어쨌든 사용자 객체는 이 방법으로는 전달이 불가합니다.
액티비티/서비스들간 사용자정의 객체 전달을 위해서 우리는 사용자정의 클래스에 parcelable 또는 serializable interface를 implement 해야 합니다. 어쨌든 parcelable는 안드로이드를 위해 특별히 디자인되었고 최고의 실행속도를 위해 권고되고 있습니다.
간단한 클래스로 시작 해봅시다:
public class User { String UserName; String Password; int Action; public User(String name,String pass,int ac){ UserName=name; Password=pass; Action=ac; } }
위는 3개의 private 필드들과 게터와 세터를 지닌 간단한 사용자 클래스 입니다.
우리는 액티비티/서비스들간에 이 클래스 객체를 전달할 수 없습니다. 그렇게 하기위해선 parcelable 클래스를 만들어야 합니다.
보시죠:
public class User implements Parcelable{ String UserName; String Password; int Action; public User(String name,String pass,int ac){ UserName=name; Password=pass; Action=ac; } //parcel part public User(Parcel in){ String[] data= new String[3]; in.readStringArray(data); this.UserName= data[0]; this.Password= data[1]; this.Action= Integer.parseInt(data[2]); } @Override public int describeContents() { // TODO Auto-generated method stub return 0; } @Override public void writeToParcel(Parcel dest, int flags) { // TODO Auto-generated method stub dest.writeStringArray(new String[]{this.UserName,this.Password,String.valueOf(this.Action)}); } public static final Parcelable.CreatorCREATOR= new Parcelable.Creator () { @Override public User createFromParcel(Parcel source) { // TODO Auto-generated method stub return new User(source); //using parcelable constructor } @Override public User[] newArray(int size) { // TODO Auto-generated method stub return new User[size]; } }; }
변수 쓰고 읽는 순서는 중요함을 알아야합니다, 같은 순서로만 읽고 쓸수 있습니다. 하나 더 주의를 드리자면 CREATOR는 대문자( 제 하루를 날렸답니다 ㅠㅠ )로 써야 합니다.
이제 사용자 객체를 parcelableExtra로 넣어서 보내고 받을 수 있습니다.
보내는 액티비티 예제:
User obj= new User("sohail","1234",1); Intent i=new Intent(this,receiverActivity.class); i.putExtra("userTag",obj); startActivity(i);
그리고 receiverActivity의 onCreate에서 getparcelableExtra로 객체를 수신합니다.
User uobj= getIntent().getParcelableExtra("userTag");
소스 탐색과 다운받기는 parcelableIntentServiceExample.
[원문] http://www.sohailaziz.com/2012/04/passing-custom-objects-between-android.html
'모바일 > Android' 카테고리의 다른 글
PHP - Android 간 암호화/복호화 (링크) (0) | 2012.07.25 |
---|---|
안드로이드 Google Cloud Messaging (GCM) 연동 개발 (0) | 2012.07.17 |
Android 라이브러리 프로젝트 (0) | 2012.05.31 |
Layout (Link) (0) | 2012.05.26 |
custom ListView (0) | 2012.05.26 |
- Total
- Today
- Yesterday
- Make Use Of
- How to geek
- 인터넷 통계정보 검색시스템
- 트위터 공유 정보모음
- 웹표준KR
- 치우의 컴맹탈출구
- Dev. Cheat Sheets
- w3schools
- Dev. 조각들
- ASP Ajax Library
- CSS Tricks
- WebResourcesDepot
- jQuery Selectors Tester
- DeveloperSnippets
- Smashing Magazine
- Nettuts+
- devListing
- 웹 리소스 사이트(한)
- Mobile tuts+
- Dream In Code
- Developer Tutorials
- CSS3 Previews
- 자북
- 안드로이드 사이드
- Code Visually
- Code School
- SQLer.com
- 무료 파워포인트 템플릿
- iconPot
- Free PowerPoint Templates
- Design Bombs
- Web Designer Wall
- 1st Webdesigner
- Vandelay Design
- 무료 벡터 이미지 사이트들
- Tripwire Magazine
- Web TrendSet
- WebMonkey
- 윤춘근 프리젠테이션 디자이너 블로그
- cz.cc 무료 DNS
- [웹하드] MediaFire
- [웹하드] DivShare
- 한컴 인터넷 오피스
- Chrome
- Docker
- JQuery
- API
- IE
- IOS
- 안드로이드
- iis
- Android
- 한글
- Mac
- classic asp
- nodejs
- 워드프레스
- javascript
- CSS
- git
- Prototype
- PHP
- laravel
- mssql
- JSON
- Linux
- nginx
- Debug
- centos
- ASP
- Wordpress
- sencha touch
- iphone
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |