일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 |
- spring pid
- REST API
- ApplicationPidFileWriter
- spring-mvc
- IntelliJ
- ORM
- JUnit
- spring bean
- static inner class
- spring batch 코드
- spring jpa
- spring-webmvc #코드읽기
- JPA mapping
- spring boot tomcat
- 톰캣
- 코드 리뷰
- 세미나
- spring camp
- spring-webmvc
- Spring Data REST
- JPA
- Spring Data JPA
- Data REST
- Spring Batch
- spring boot
- batch
- tomcat
- docker
- SuperTypeToken
- Spring
- Today
- 1
- Total
- 916,386
woniper
Android Intent를 이용한 Activity간 Data 공유 본문
안드로이드에서는 Activity간 Data 공유를 Intent라는 객체를 사용해서 구현한다. Intent는 명시적 Intent와 암시적 Intent가 있다. Intent에 대한 자세한 설명은 제외하고 이번 포스팅에서는 Intent를 사용해서 Activity간 Data 공유하는 방법을 설명한다.
PutActivity에서 이름, 나이 입력 후 Data객체 생성 후 GetActivity로 Data를 전송한다고 가정하자
1. PutActivity (데이터 전송 화면)
- Data.java
package com.woniper.example; import java.io.Serializable; public class Data implements Serializable { public String name; public int age; public Data() {} public Data(String name, int age) { this.name = name; this.age = age; } }
- PutActivity.java
package com.woniper.example; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; public class PutActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final EditText etName = (EditText)findViewById(R.id.et_name); final EditText etAge = (EditText)findViewById(R.id.et_age); Button btn = (Button) findViewById(R.id.btn); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String name = etName.getText().toString(); int age = Integer.parseInt(etAge.getText().toString()); // Data 객체 생성 Data data = new Data(name, age); // Intent에 Data객체 저장 Intent intent = new Intent(PutActivity.this, GetActivity.class); intent.putExtra("data", data); // GetActivity로 Activity 전환 startActivity(intent); } }); } }
- put_activity.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<EditText
android:id="@+id/et_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="이름을 입력해주세요."/>
<EditText
android:id="@+id/et_age"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="나이를 입력해주세요."/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="전송"
android:id="@+id/btn"/>
</LinearLayout>
2. GetActivity (데이터 받아서 처리하는 화면)
- GetActivity.java
package com.woniper.example; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.widget.TextView; public class GetActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.get_activity); // Data 객체를 받을 Intent 생성 Intent intent = getIntent(); Data data = (Data)intent.getSerializableExtra("data"); TextView txtName = (TextView) findViewById(R.id.txt_name); TextView txtAge = (TextView) findViewById(R.id.txt_age); // Data TextView에 적용 txtName.setText("이름 : " + data.name); txtAge.setText("나이 : " + String.valueOf(data.age)); } }
- get_activity.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/txt_name"
android:textSize="30sp"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/txt_age"
android:textSize="30sp"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
3. AndroidManifest.xml (Activity 설정)
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.woniper.example"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="19"/>
<application android:label="@string/app_name" android:icon="@drawable/ic_launcher"
android:theme="@android:style/Theme.Light">
<!--Main Activity(첫화면) -->
<activity android:name="com.woniper.example.PutActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:name="com.woniper.example.GetActivity" />
</application>
</manifest>
Activity는 AndroidManifest.xml이라는 애플리케이션 설정 파일에 적용되어 있어야 Activity간 전환이 가능하다.
4. 화면
PutActivity화면 GetActivity화면
5. Intent Method
Type | PUT |
GET | 설명 |
Object | putExtra("object", Object) |
getSerializableExtra("object") | 객체 전송, 반드시 Serializable을 상속 |
String | putExtra("string", "StringType") |
getStringExtra("string") | 문자열 전송 |
Integer | putExtra("int", 100) |
getIntExtra("int") | int 타입 전송 |
Long | putExtra("long", 100L) |
getLongExtra("long") | long 타입 전송 |
Double | putExtra("double", 100.123) | getDoubleExtra("double") | double 타입 전송 |
Boolean | putExtra("boolean", true) |
getBooleanExtra("boolean") | boolean 타입 전송 |
Bundle | putExtra("bundle", Bundle) | getBundleExtra("bundle") | Bundle 객체 전송 |
Object객체와 Bundle객체를 제외하고는 기본으로 모든 DataType을 제공한다. 위 표에 제외된 Type도 있다.
'Android' 카테고리의 다른 글
Android XML Selector 생성 및 적용하기 (5) | 2014.08.02 |
---|---|
[Android] 어플리케이션 로딩화면(Splash) 구현하기 (6) | 2013.06.12 |
[안드로이드]AsyncTask 설명 (1) | 2013.04.12 |
- Tag
- Android Intent, Intent, Intent 객체 전송