본문 바로가기

나 어제 배웠다/Android

Android Explicit Intent 화면 및 데이터 이동

 

 

Android Intent (전달매체)

- Explicit Intent ( 명시 : 이동)

- Implicit Intent ( 암시 : 조건->검색->실행 )

 

Explicit Intent

1. 프로젝트 생성

 

 

2. main.xml widget 추가 

<?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">
   
  <TextView 
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:text="Main-Activity"
     android:textSize="12pt"
     android:gravity="center"/>
    
 <LinearLayout 
  android:orientation="horizontal"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content">
  <TextView
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="이름"
   android:textSize="10pt"/>
  <TextView
      android:id="@+id/TextView01"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:text="없음"
   android:gravity="right"
   android:textSize="10pt"/> 
 </LinearLayout>
 
 <LinearLayout 
  android:orientation="horizontal"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content">
  <TextView
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="주소"
   android:textSize="10pt"/>
  <TextView
      android:id="@+id/TextView02"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:text="없음"
   android:gravity="right"
   android:textSize="10pt"/> 
 </LinearLayout>
 
 <LinearLayout 
  android:orientation="horizontal"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content">
  <TextView
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="전화번호"
   android:textSize="10pt"/>
  <EditText
      android:id="@+id/et01"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:hint="없음"/> 
 </LinearLayout>  
 
 <Button
  android:id="@+id/Button01"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:text="입력 엑티비티로"
  android:layout_marginTop="230px"/>
  
</LinearLayout>


 

3. sub.xml widget 추가

<?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">
   
  <TextView 
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:text="Sub-Activity"
     android:textSize="12pt"
     android:gravity="center"/>
    
 <LinearLayout 
  android:orientation="horizontal"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:layout_marginTop="10px">
  <TextView
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="이 름  "
   android:textSize="10pt"/>
  <EditText
      android:id="@+id/EditText01"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:hint="ex)홍길동"/> 
 </LinearLayout>
 
 <LinearLayout 
  android:orientation="horizontal"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content">
  <TextView
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="주 소  "
   android:textSize="10pt"/>
  <EditText
      android:id="@+id/EditText02"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:hint="ex)서울시"/> 
 </LinearLayout>
 
 <LinearLayout 
  android:orientation="horizontal"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content">
  <TextView
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="전화번호"
   android:textSize="10pt"/>
  <EditText
      android:id="@+id/et03"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:hint="ex)010-111-1111"/> 
 </LinearLayout>  
 
 <Button
  android:id="@+id/Button02"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:text="전송"
  android:layout_marginTop="200px"/>
  
</LinearLayout>


 

4. ExplicitTestActivity.java 변경

package hjh.intent;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class ExplicitTestActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
               
        this.setInit();
       
        b.setOnTouchListener(new View.OnTouchListener() {
   
   @Override
   public boolean onTouch(View v, MotionEvent event) {
    // TODO Auto-generated method stub
    Intent i = new Intent(ExplicitTestActivity.this,SubActivity.class);
    //TextVeiw 값 설정
    String name = tv1.getText().toString();
    i.putExtra("param_name", name);
    String addr = tv2.getText().toString();
    i.putExtra("param_addr", addr);
    String tel = et1.getText().toString();
    i.putExtra("param_tel", tel);
    
    //화면만 전환
    //startActivity(i);
    
    //결과 return    
    startActivityForResult(i, 0);   //onActivityResult Call
    return false;
   }
  });       
    }
   
    TextView tv1, tv2;
    EditText et1;
    Button b;   
    void setInit(){
     tv1 = (TextView)findViewById(R.id.TextView01);
        tv2 = (TextView)findViewById(R.id.TextView02);
        et1 = (EditText)findViewById(R.id.et01);
        b = (Button)findViewById(R.id.Button01);
    }   
   
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent i){
     if(requestCode == 0){
      if(resultCode == RESULT_OK){
       String name = i.getStringExtra("param_name");
       String addr = i.getStringExtra("param_addr");
       String tel = i.getStringExtra("param_tel");
       tv1.setText(name);
       tv2.setText(addr);
       et1.setText(tel);
      }
     }
    }
}

 

5. SubActivity.java 추가

package hjh.intent;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class SubActivity extends Activity {
 /** Called when the activity is first created. */
 Intent i;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sub);
       
        final EditText et1 = (EditText)findViewById(R.id.EditText01);
        final EditText et2 = (EditText)findViewById(R.id.EditText02);
        final EditText et3 = (EditText)findViewById(R.id.et03);
       
        final Button b = (Button)findViewById(R.id.Button02);
       
        //1. Main에서 온 Intent 찾기
        i = getIntent();
       
        et1.setText(i.getStringExtra("param_name"));
        et2.setText(i.getStringExtra("param_addr"));
        et3.setText(i.getStringExtra("param_tel"));
       
        b.setOnTouchListener(new View.OnTouchListener() {
   
   @Override
   public boolean onTouch(View v, MotionEvent event) {
    // TODO Auto-generated method stub       
    //2. et1, et2의 값을 꺼내서 Intent에 싣는다
    String name = et1.getText().toString();
    String addr = et2.getText().toString();
    String tel = et3.getText().toString();
    
    i.putExtra("param_name", name);
    i.putExtra("param_addr", addr);
    i.putExtra("param_tel", tel);
    
    //3. Main으로 Intent를 보낸다        
    setResult(SubActivity.this.RESULT_OK,i);            //Intent return
    finish();
    return false;
   }
  });
       
    }
}

 

6. AndroidManifest.xml 변경

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="hjh.intent"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".ExplicitTestActivity"
                  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=".SubActivity"/>
    <uses-sdk android:minSdkVersion="7" />

</manifest>

 

7. 실행결과