2개의 Activity 사이에 Intent를 이용하여 데이터를 주고 받는 예
AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.androidapp" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".TestActivity" android:label="@string/title_activity_main" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".Activity02" android:label="두번째 액티비티" > </activity> </application> </manifest>
Activity01.java
package com.example.androidapp; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.*; public class Activity01 extends Activity { ImageView iv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.intentdemo01); iv = (ImageView) findViewById(R.id.imageView1); } public void onBtnNext(View v) { Intent intent = new Intent(this, Activity02.class); intent.putExtra("msg", "그림을 골라주세요"); startActivityForResult(intent, 111); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(requestCode==111 && resultCode==1) { int imgNum = Integer.valueOf(data.getExtras().getString("imgNum")); int id = 0; switch(imgNum) { case 1: id = R.drawable.mountain; break; case 2: id = R.drawable.persian_smile; break; case 3: id = R.drawable.sky; break; } iv.setImageResource(id); } } }
intentdemo01.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/button1" android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="onBtnNext" android:text="두번째 액티비티로 이동" /> <ImageView android:id="@+id/imageView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:src="@drawable/ic_launcher" /> </LinearLayout>
Activity02.java
package com.example.androidapp; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.EditText; public class Activity02 extends Activity { EditText et; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.intentdemo02); et = (EditText) findViewById(R.id.editText1); Intent intent = getIntent(); String msg = intent.getExtras().getString("msg"); Log.e("첫번째 액티비티로부터 전달된 데이터", msg); } public void onBtnReturn(View v) { Intent intent = new Intent(); intent.putExtra("imgNum", et.getText().toString()); setResult(1, intent); finish(); } }
intentdemo02.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <EditText android:id="@+id/editText1" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" > <requestFocus /> </EditText> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="onBtnReturn" android:text="앞의 액티비티에 데이터 전달하기" /> </LinearLayout>