[안드로이드] 액티비티 실행 시 데이터 전달하기

프로그래밍/Android 관련2018. 1. 30. 21:04

안녕하세요. 개발자 드리머즈입니다.


안드로이드의 한 액티비티Activity에서 다른 액티비티를 실행할 때 데이터를 전달하는 방법을 설명하겠습니다.


먼저 일반적으로 ActivityA에서 ActivityB를 실행하고자 한다면 보통 아래와 같이 코드를 작성할 것입니다.


1
2
3
Intent intent = new Intent(mContext, ActivityB.class);
 
mContext.startActivity(intent);
cs


Intent 생성자의 1번째 인자에 Context의 객체를 주고, 2번째 인자에 실행시키고자 하는 클래스의 Class 객체를 입력하는 것이 핵심입니다.

이 처럼 intent 객체에 실행시킬 액티비티의 정보를 넣어준 다음에 startActivity() 함수를 호출하면 지정한 액티비티가 실행됩니다.


만약 이 실행되는 ActivityB에 데이터를 전달하고자 한다면 아래와 같이 약간의 코드만 추가하면 됩니다.


ActivityA.java

1
2
3
4
5
6
7
Intent intent = new Intent(mContext, ActivityB.class);
 
Bundle bundle = new Bundle();
bundle.putString("TEST_KEY""TEST_VALUE");
intent.putExtras(bundle);
 
mContext.startActivity(intent);
cs


Map과 비슷한 Bundle 클래스의 객체를 만들어 여기에 전달하고자 하는 데이터를 담습니다. 그리고 이 bundle 객체를 intent에 넣으면 됩니다.

그러면 전달받고자 하는 쪽에선 아래와 같은 간단한 코드로 값을 전달받을 수 있습니다.


ActivityB.java

1
2
3
4
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
 
String testValue = bundle.getString("TEST_KEY");
cs


위의 코드를 보면 어떻게 동작하는지 쉽게 이해가 될 것입니다. 그리고 Bundle에 담는 데이터의 key값은 String만 되지만, value는 String 뿐만 아니라 다양한 형태를 넣을 수 있습니다. putFloat()로 bundle에 Float형 값을 넣었으면 되찾을 때, getFloat()함수로 찾으면 됩니다.




작성자

Posted by 드리머즈

관련 글

댓글 영역