안드로이드 스튜디오

2.13 2주면 포기할 당신을 위하여: 안드로이드 스튜디오에서 Intent 코딩: II

coding art 2020. 2. 21. 14:36
728x90

Intent 명령에 의해서 스마트폰 화면 전환이 가능하다면 화면과 연관된 데이터 즉 텍스트 나 이미지 정보들도 넘겨줄 수 있어야 할 것이다. 가장 간단한 정보로서 문자열을 MainActivity에서 SubActivity로 넘겨보도록 하자.

 

 MainActivityreslayout activity_main.xml에서 EditText 기능을 사용하여 문자열을 입력 받아서 송신(Send) 버튼(Button)을 클릭하여 Intent 기능에 의해서 SubActivity로 넘겨 SubActivity에 소속된 activity_sub.xml에 의해 전송받은 문자열 데이터를 출력해야 할 것이다. 이 과정은 와이파이나 블루투스와 같은 무선전파를 사용하는 통신은 아니지만 Activity 간에 정보를 넘겨주고 수신하는 일종의 너무나도 중요한 프로토콜 코딩에 해당한다. activity_main.xml에서 ided_text로 하여 EditText를 편집해 넣는다.

MainActivity 헤더 영역에서는 private EditText ed_text를 선언 후 findViewByid 에 의해 ed_text 주소를 참조하자. 그 의미는 ed_textactivity_main.xmlEditText에서 작성되었고 속성 창에 보면 그 id 값이 ed_text 로 지정되어 있음을 알 수 있다. 따라서 MainActivity에서 사용하려면 별도로 private EditText ed_text를 선언해야 하며 아울러 EditText 가 데이터를 입력 받을 수 있는 위젯이기 때문에 MainActivity 헤더 영역에 import android widget.EditText 문이 처리되어야 한다. button_send 도 마찬가지이다.

 

MainActivity에서 ed_text button_send를 참조할 수 있으면 그 다음 스텝은 스마트폰 화면에서 문자열 입력 후 버튼 위젯에 의해 버튼이 눌려지는 이벤트를 모니터링 하는 것이다. 엡인벤터 코딩에서는 When ∙∙∙ 로 이루어진 퍼즐 뭉치들이 여럿 있을 수 있는데 이는 여러 종류의 버튼들이 클릭되는 그 시점부터 실행이 이루어지게 된다. 안드로이드 스튜디오 명령으로는 button_send를 상속하여 setOnClickListener 명령이 사용된다. public void onClick() 가 뜨면 ()에 new Vi까지 입력하면 나타나는 자동입력 옵션을 선택하여 (View v)를 완성한다. 요 부분 기법은 아주 많이 사용되므로 익숙해져야 할 필요가 있을 것이다. 이어서 대문자 Intent thanswk intent=new(MainActivity.this, SubActivity.class)를 입력하면 자동으로 packageContext가 나타난다. 확장자 thisMainActivity이며 SubActivity class를 사용한다. 물론 MainActivity class 이다.

 

아울러 아래의 빨간 박스친 부분은 ed_text 처리에 따라 자동완성 되는 부분이다.

2개의 Activity layout 화면을 설정하고 Intent 에 의해서 화면 전환과 함께 데이터를 넘겨주는 간단한 텍스트 송신 수신 프로토콜 예제 코드를 작성해 보자.

첫 번째 화면은 EditText에 의해 문자열 Text를 읽어 들여 SEND 버튼을 클릭하게 되면 두 번째 화면에서 넘겨 빋은 문자열 Text를 디스플레이 하는 Intent를 코딩하도록 하자. 이미 문자를 읽어 들여 클릭하는 MainActivity activity_main.xml 은 작성이 되었으므로 두 번째 화면을 관리하기 위한 SubActivity activity_sub.xml을 작성하도록 하자.

 

다음은 이미 화면만 전환하는 Intent 코드에서 사용했던 activity_sub.xml 사례인데 아무런 수정 없이 그대로 사용이 가능하다. 버튼도 들어 있지만 그냥 버튼으로서 특별한  명령실행과는 관련이 없다.

SubActivity에서는 btn_send sub_tv 코딩 단계에서 private 처리와 아울러 위젯 라이브러리 import 가 이루어져야 한다. 이런 항들이 자동완성 기능을 사용하여 제대로 처리되지 않고 에러에 해당하는 빨간색 글씨로 남아 있다면 직접 입력을 해서라도 해소시켜야 할 것이다.

다음은 실행 결과이다. 입력 후 클릭하면 화면이 바뀌면서 수신된 메시지가 나타난다. 수신된 글자 크기가 다른데 그 이유는 송신측에서 글자 크기를 입력 박스의 크기 단위인 200dp를 사용하였지만 수신에서는 서로 다른 단위체계인 글자크기 30sp를 사용하였기 때문이다.

이로서 Intent 코딩을 통해 문자열 정보를 Intent 프로토콜에 따라 송신 수신하였다. 그 방법은 와이파이나 블루투스 통신 프로토콜 코딩과 유사해 보인다. 더 나아가 문자열 송신뿐만 아니라 이미지 데이터 송신까지도 가능할 것이다. 그밖에도 수많은 안드로이드 스튜디오 코딩 예제가 있을 수 있지만 어느 정도 스스로 코드의 구조를 이해하기 위한 기초가 되었을 것이다.

 

첨부된 코드를 다운받아 참조해 보자.

Intent.zip

다운받아 실행된 유튜브 동영상 테스트 결과를 관찰해 보세요.

https://youtu.be/lXthPJ_2ytk

 

 

Intent.zip
0.13MB