[안드로이드] 액티비티 실행 시 데이터 전달하기
프로그래밍/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()함수로 찾으면 됩니다.
댓글 영역