2014년 5월 20일 화요일

[Android] Android Intent 값 받아오기

[Android] Android Intent 값 받아오기 

Intent

다른 액티비티를 시작하려면 액티비티의 실행에 필요한 여러가지 정보들을 보내주어야 합니다.
이러한 정보를 Activity에 실어 보낼 수 있습니다.
Activity들은 Stack 자료구조에 저장됩니다.
그러므로 Back을 누르면 스택에서 현재 Activity를 Pop시키면서 이전 Activity로 돌아갈 수 있습니다.

본 예제에서는
Intent를 사용한 간단한 Activity간의 이동을 다루며
putExtra를 사용해서 값을 전달하는 기본 구현을 해 보도록 하겠습니다.

 


본 화면과 같이 간단한 Editview, Button을 포함한 MainActivity를 LinearLayout으로 만들어 줍니다.

 

또한 간단한 Editview, Button을 포함하는 SubActivity를 LinearLayout으로 만들어 줍니다.

자 여기서 MainActivity 에서 SubActivity로 이동 후, SubActivity의 EditText에 문자열을 입력하고
Input버튼을 누르면, 화면이 SubActivity에서 MainActivity로 이동하고,  문자열 값이 MainActivity의 EditText에 
전달되도록 해 보겠습니다.

그러기 위해서는 첫번째

MainActivity의 버튼에 Event를 매겨봅시다.
 

보기와 같이 onCreate Method를 정의합니다.
버튼을 클릭하면 Intent를 만드는데
여기서 생성자에 들어가는 파라미터는 순서대로 현재 액티비티, 옮길 액티비티 입니다.

startActivityForResult 메서드에는 Intent 시, 1이라는 값을 넘긴다는 것입니다.




두번째로 SubActivity를 정의합니다.
 

보기와 같이 버튼에 이벤트를 달았는데요
putExtra메서드를 사용하여 "INPUT_TEXT"의 이름으로 EditText의 값을 가져와서 넘깁니다.
또한 결과값을 Result_OK로 설정하지요.
finish(); 는 Activity의 종료를 의미합니다.

그렇다면, 버튼을 누르면 다시 MainActivity로 넘어가게 됩니다.

이 때, 가만히 놔두면 MainActivity의 EditText값이 변하지 않는데요
 

보기와 같이 onActivityResult 메서드를 재정의 해 주어야 합니다.
requestCode(MainActivity에서 SubActivity로 이동할 때 설정했던 1) 이 1이고,
resultCode(SubActivity에서 종료 전 설정했던 Result값) 이 RESULT_OK이면
EditText의 값을 정합니다.

파라미터로 data라는 Intent가 전달되는데요,
이 파라미터에 getStringExtra("INPUT_TEXT")(SubActivity에서 설정했던 값)을 입력해주면

아래와 같이 값이 성공적으로 전달된 것을 볼 수 있답니다.
참쉽죠?
 


댓글 없음:

댓글 쓰기