안녕하세요?
이번 포스팅에서는 [Do it 안드로이드 앱 프로그래밍]에서 부가 데이터라고 해서 한번 Parcel을 이용해서 데이터를 주고받는 실습을 해보고자 했습니다.
먼저 SampleParcelable이라는 이름으로 프로젝트를 생성하도록 합니다. 그리고 나서 package explorer에서 우클릭을 해서 새로운 액티비티를 생성한 다음에, 액티비티의 이름을 MenuActivity라고 아래의 그림과 같이 지정을 하도록 합니다.
다음과 같이 액티비티가 생성되었으면, 이 다음에는 package explorer에서 app폴더에 우클릭을 한 다음에, 새로운 클래스를 생성하는 작업에 들어가도록 합니다.
정확히는 저렇게 java폴더 안에서 프로젝트 폴더명을 클릭한 다음, 여기서 우클릭을 해서 [New]->[java class]를 눌러서 새로이 자바 클래스를 생성하도록 합니다.
그리고 나서 클래스의 이름은 SimpleData라고 정의를 하도록 합니다. 이와 같은 과정을 거치고 나면 SimpleData.java라는 자바 파일이 생성이 되는데, 여기서 부터 코딩을 시작하도록 합니다.
제일먼저 해야 할일은 public class SimpleData라고만 되어 있는 부분앞에다가 implements Parcelable이라는 것을 입력해서 앞에 있는 클래스를 통째로 전달하기 위한 작업이라는 것을 알려 주어야 합니다.
다음으로는 이렇게 입력을 해도 빨간색 밑줄이 생기면서 에러가 뜨는데, 이럴 경우 뜨는 이 빨간색 전구를 위 스크린샷처럼 클릭하면 여기서 Implement methods라는 항목을 클릭하도록 합니다.
클릭하면 위와 같은 스크린샷이 뜨는데, 모두 다 클릭하고 나서 OK버튼을 누르도록 합니다. 그러면 아래의 스크린샷과 같은 화면이 뜨게 됩니다.
위 스크린샷에 보이는 것 처럼 빨간색 박스안에 표시된 코드가 자동으로 입력이 되게 됩니다. 그럼 이 상황에서 계속해서 코딩을 이어 가도록 합니다.
그 다음에는 먼저 변수들을 정의하는데, 여기서 아랫쪽에 있는 public SimpleData (int num, String msg){라는 항목에서 각 변수의 약자를 다시한번 정의하는 과정을 책에서는 거치고 있었습니다.
다음으로는 parcel이라고 해서 보내는 데이터를 읽는 과정이라고 저는 이해하고 있습니다. 아무튼 여기서 src는 일종의 변경이 가능한 변수 이름으로서, 위 스크린샷에 보이는 빨간색 박스안의 내용은 다음과 같은 내용을 내포하고 있습니다. number는 int를 읽고, message는 String을 읽어라 라는 의미입니다.
다음은 Parcelable뒤에다가 Creator를 붙여서 Creator상수를 정의하는 부분이라고 하는데, 저로서는 아직 이 부분은 이해를 다 하지는 못했습니다. 아무튼 이제는 여기다가 자동완성으로 Creator가 뜨는데, 이 부분을 선택하도록 하였습니다.
일단 이 부분은 제가 잘 모르는 부분이라서 책에서 나와 있는 대로 타이핑을 하기만 하였습니다. 다만, 여기서 (Parcel in)에 들어가 있는 이 in은 임의로 변경이 가능해 보입니다.
다음으로는 Parcel에 쓰기를 하는 부분인데, 여기다가는 위에 나와 있는 빨간색 박스에 있는 내용으로 일단 채우기는 하였습니다.
일단 여기까지 해서 일차적인 SimpleData.java의 코딩이 겉은 완성인데, 문제는 여기서 이 구문하나하나가 무엇을 의미하는 지 정확하게 알기는 어려웠습니다. 이 내용까지 포스팅을 하기 위해서는 한번의 포스팅만으로는 무리가 되기에, 아무래도 몇번 나누어서 포스팅을 하고자 합니다. 다음 포스팅에서는 좀 더 알찬 내용을 포스팅 하기를 기원합니다.
'일상생활 이야기 > 안드로이드 스튜디오 독학하기' 카테고리의 다른 글
안드로이드 스튜디오 독학하기 37일째 (0) | 2017.05.04 |
---|---|
안드로이드 스튜디오 독학하기 36일-part2 (0) | 2017.04.21 |
안드로이드 스튜디오 독학하기 35.5일 (0) | 2017.04.14 |
안드로이드 스튜디오 독학하기 35일-문제가 해결되어도 기분나쁘기는 처음입니다. (0) | 2017.04.13 |
안드로이드 스튜디오 독학하기 34.5일-산넘어 산입니다. (0) | 2017.04.11 |