일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- swift
- loop
- 신도림
- 신도림 테크노마트
- setting
- 앱스토어
- LG유플러스
- GCD
- push
- 해몽
- 얻는법
- 포켓볼
- 보라카이
- Xcode
- Check
- UITableView
- Example
- UIView
- swift3
- Bitcode
- 샘플
- 아이폰7
- IOS
- simulator
- 페이백
- error
- afterdelay
- 스마트폰
- 포켓몬 GO
- 공략
- Today
- Total
도래울
Activity 사이에 자료를 전달하는 예제 본문
2개의 Activity를 만들고, Activity 사이에 자료를 전달하는 것을 구현한다
View Design
Main에서 [수정] 버튼을 누르면 노란색으로 표시된 문자열이 Sub의 EditText에 나타나고, EditText의 내용을 수정한 후 [OK] 버튼을 누르면 입력한 내용이 Main의 노락색 텍스트에 반영되도록 한다. 2개의 View를 각각 디자인...
Main Sub
실행 결과
----------------- AndroidManifest.xml -------------------------
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ComActivities"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".MainMenu"
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=".EditItem" /> // 추가
</application>
</manifest>
-------------------- Main --------------------------
package com.ComActivities;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainMenu extends Activity {
TextView myText;
final static int ACT_EDIT = 0; // Intent 식별 코드
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myText = (TextView) findViewById(R.id.TextView01);
findViewById(R.id.btn_edit).setOnClickListener(MyListener);
findViewById(R.id.btn_close).setOnClickListener(MyListener);
}
Button.OnClickListener MyListener = new Button.OnClickListener() {
public void onClick(View v) {
if (v.getId() == R.id.btn_close) {
finish();
return;
}
Intent intent = new Intent(MainMenu.this, EditItem.class); // Intent를 만든다
intent.putExtra("Text_Main", myText.getText().toString()); // Text_Main이라는 태그를 붙여서 문자열을 넘긴다
startActivityForResult(intent, ACT_EDIT); // 결과를 기다리는 루틴에 식별 코드를 넘긴다
}
};
protected void onActivityResult(int RequstCode, int resultCode, Intent data) { // Intent의 결과를 처리하는 루틴
switch (RequstCode) {
case ACT_EDIT :
if (resultCode == RESULT_OK) // 전달된 값이 있으면
myText.setText(data.getStringExtra("Text_Sub")); // Text_Sub 라는 태그를 달고온 문자열을 받는다
break;
}
}
}
---------------------- Sub -----------------------
package com.ComActivities;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.*;
public class EditItem extends Activity {
EditText myEdit;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.editview);
myEdit = (EditText) findViewById(R.id.EditText01);
Intent intent = getIntent(); // Intent에서 전달받은 값을 가져온다
myEdit.setText(intent.getStringExtra("Text_Main")); // Text_Main 이라는 태그를 달고온 문자열을 가져온다
findViewById(R.id.btn_OK).setOnClickListener(MyListener);
findViewById(R.id.btn_Cancel).setOnClickListener(MyListener);
}
Button.OnClickListener MyListener = new Button.OnClickListener() {
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_OK :
Intent intent = new Intent();
intent.putExtra("Text_Sub", myEdit.getText().toString()); // Text_Sub 라는 태그를 달아서 문자열을 전달한다
setResult(RESULT_OK, intent);
break;
case R.id.btn_Cancel :
setResult(RESULT_CANCELED);
}
finish();
}
};
}
Activity에 값을 넘겨줄 때에는 다음과 같은 메소드를 사용한다
Intent.putExtra(String name, int value) name : 자료를 식별할 수 있는 임의의 문자열(Tag)
Intent.putExtra(String name, String value) 자료형에 따른 메소드가 Override 되어 있다
Intent.putExtra(String name, boolen value)
.......................
String getStringExtra(String name) 자료를 읽어들이는 메소드는 자료형에 따라 각각 다르다
int getIntExtra(String name, int defaultvalue)
boolean getBooleanExtra(String name, boolean defaultvalue)
....................
값을 넘긴 후 리턴값을 받을 때에는 다음의 메소드를 사용한다
startActivityForResult(Intent indent, int requstCode);
Activity가 실제로 리턴값을 넘겨받는 것은 다음의 이벤트에서 처리된다
protected void onActivityResult(int RequstCode, int resultCode, Intent data)
'개발 > Android' 카테고리의 다른 글
안드로이드 프로그램 샘플 모음 (0) | 2016.02.05 |
---|---|
Android RadioGroup 예제 (0) | 2016.02.05 |
Android Emulator 단축키 (0) | 2016.02.05 |
안드로이드 2.0 SDK + 이클립스 3.5 개발환경 설정 방법 (0) | 2016.02.05 |
sqllite 정리 (0) | 2016.02.05 |