2012年4月12日 星期四

[Android]使用 Intent 傳遞資訊

[Android]使用 Intent 傳遞資訊


<1> Master activity sends information to Slave activity.


  
<2> Slave activity responses information to Master activity.



<MasterActivity.java>
   1: package com.android.intentpassdata;
   2:  
   3: import android.app.Activity;
   4: import android.content.Intent;
   5: import android.graphics.Color;
   6: import android.os.Bundle;
   7: import android.view.View;
   8: import android.widget.Button;
   9: import android.widget.EditText;
  10: import android.widget.TextView;
  11:  
  12: public class MasterActivity extends Activity {
  13:     
  14:     private Bundle bundle;
  15:     private int requestCode = 110;
  16:     private Button b1,    b2;
  17:     private TextView tv;
  18:     private EditText et;
  19:     
  20:     /** Called when the activity is first created. */
  21:     @Override
  22:     public void onCreate(Bundle savedInstanceState) {
  23:         super.onCreate(savedInstanceState);
  24:         setContentView(R.layout.main);
  25:         findViews();
  26:         buttonListeners();
  27:   
  28:    }
  29:     
  30:     
  31:     private void findViews() {
  32:         et = (EditText) findViewById(R.id.editText1);
  33:         b1 = (Button) findViewById(R.id.btnSend);
  34:         b2 = (Button) findViewById(R.id.btnExit);
  35:         tv = (TextView) findViewById(R.id.textView3);
  36:     }
  37:         
  38:     
  39:     private void buttonListeners(){
  40:  
  41:         b1.setOnClickListener(new View.OnClickListener() {
  42:            public void onClick(View v) {
  43:                 Intent intent = new Intent(v.getContext(),SlaveActivity.class);
  44:                 bundle = new Bundle();
  45:                 bundle.putString("main_send_msg", et.getText().toString());
  46:                 intent.putExtras(bundle);
  47:                 startActivityForResult(intent, requestCode);
  48:            }
  49:         });
  50:           
  51:         b2.setOnClickListener(new View.OnClickListener() {
  52:             public void onClick(View v) {
  53:                  finish();
  54:             }
  55:         });
  56:     }        
  57:     
  58:     @Override
  59:     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  60:         bundle = data.getExtras();
  61:         String got_return_msg = bundle.getString("slave_return_msg");
  62:         tv.setBackgroundColor(Color.YELLOW);
  63:         tv.setTextColor(Color.RED);
  64:         tv.setText(got_return_msg);
  65:     }
  66:  
  67: }



<SlaveActivity.java>

   1: package com.android.intentpassdata;
   2:  
   3: import android.app.Activity;
   4: import android.content.Intent;
   5: import android.graphics.Color;
   6: import android.os.Bundle;
   7: import android.view.View;
   8: import android.widget.Button;
   9: import android.widget.EditText;
  10: import android.widget.TextView;
  11:  
  12: public class SlaveActivity extends Activity {
  13:     private EditText et;
  14:     private TextView tv;
  15:     private Button b1;
  16:     
  17:     @Override
  18:     public void onCreate(Bundle savedInstanceState) {
  19:         super.onCreate(savedInstanceState);
  20:         setContentView(R.layout.slavelayout);
  21:         
  22:         findViews();
  23:         showResults();
  24:         buttonListener();
  25:     }
  26:         
  27:     private void findViews(){
  28:         et = (EditText) findViewById(R.id.editText1);
  29:         b1 = (Button) findViewById(R.id.btnReturn);
  30:         tv = (TextView)findViewById(R.id.textView2);
  31:     }
  32:         
  33:         
  34:     private void showResults(){
  35:         Bundle bundle = this.getIntent().getExtras();
  36:          String got_send_msg = bundle.getString("main_send_msg");
  37:          tv.setBackgroundColor(Color.YELLOW);
  38:          tv.setTextColor(Color.RED);
  39:         tv.setText(got_send_msg);       
  40:     }
  41:         
  42:         
  43:     private void buttonListener(){
  44:         b1.setOnClickListener(new View.OnClickListener() {
  45:             public void onClick(View v) {
  46:                 Intent intent = new Intent();
  47:                 Bundle bundle = new Bundle();
  48:                 bundle.putString("slave_return_msg", et.getText().toString());
  49:                 intent.putExtras(bundle);
  50:                 // resultCode=RESULT_OK
  51:                 setResult(RESULT_OK, intent);
  52:                 SlaveActivity.this.finish();                
  53:             }
  54:         });        
  55:     }
  56: }

<main.xml>
   1: <?xml version="1.0" encoding="utf-8"?>
   2: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   3:     android:layout_width="fill_parent"
   4:     android:layout_height="fill_parent"
   5:     android:orientation="vertical" >
   6:  
   7:     <TextView
   8:         android:layout_width="fill_parent"
   9:         android:layout_height="wrap_content"
  10:         android:text="@string/activity_master_name" />
  11:  
  12:     <RelativeLayout
  13:         android:id="@+id/relativeLayout1"
  14:         android:layout_width="match_parent"
  15:         android:layout_height="wrap_content" >
  16:  
  17:         <TextView
  18:             android:id="@+id/textView1"
  19:             android:layout_width="wrap_content"
  20:             android:layout_height="wrap_content"
  21:             android:layout_alignParentLeft="true"
  22:             android:layout_centerVertical="true"
  23:             android:text="@string/strSendtoSlave"
  24:             android:textSize="14sp" />
  25:  
  26:         <EditText
  27:             android:id="@+id/editText1"
  28:             android:layout_width="150dp"
  29:             android:layout_height="45dp"
  30:             android:layout_alignParentRight="true"
  31:             android:layout_alignParentTop="true"
  32:             android:inputType="text" >
  33:  
  34:             <requestFocus />
  35:         </EditText>
  36:  
  37:     </RelativeLayout>
  38:  
  39:     <RelativeLayout
  40:         android:id="@+id/relativeLayout2"
  41:         android:layout_width="match_parent"
  42:         android:layout_height="wrap_content" >
  43:  
  44:         <TextView
  45:             android:id="@+id/textView2"
  46:             android:layout_width="wrap_content"
  47:             android:layout_height="wrap_content"
  48:             android:layout_alignParentLeft="true"
  49:             android:layout_centerVertical="true"
  50:             android:text="@string/strReceivefromSlave"
  51:             android:textSize="14sp" />
  52:  
  53:         <TextView
  54:             android:id="@+id/textView3"
  55:             android:layout_width="150dp"
  56:             android:layout_height="45dp"
  57:             android:layout_alignParentRight="true"
  58:             android:layout_alignParentTop="true"
  59:             android:focusable="false"
  60:             android:gravity="center_vertical|left"
  61:             android:text="@string/strNull"
  62:             android:textSize="16sp" />
  63:  
  64:     </RelativeLayout>
  65:  
  66:     <RelativeLayout
  67:         android:id="@+id/relativeLayout3"
  68:         android:layout_width="match_parent"
  69:         android:layout_height="wrap_content" >
  70:  
  71:         <Button
  72:             android:id="@+id/btnSend"
  73:             android:layout_width="wrap_content"
  74:             android:layout_height="wrap_content"
  75:             android:layout_alignParentLeft="true"
  76:             android:layout_alignParentTop="true"
  77:             android:text="@string/strSend" />
  78:  
  79:         <Button
  80:             android:id="@+id/btnExit"
  81:             android:layout_width="wrap_content"
  82:             android:layout_height="wrap_content"
  83:             android:layout_alignParentTop="true"
  84:             android:layout_marginLeft="22dp"
  85:             android:layout_toRightOf="@+id/btnSend"
  86:             android:text="@string/strExit" />
  87:  
  88:     </RelativeLayout>
  89:  
  90: </LinearLayout>


<slavelayout.xml>

   1: <?xml version="1.0" encoding="utf-8"?>
   2: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   3:     android:layout_width="match_parent"
   4:     android:layout_height="match_parent"
   5:     android:orientation="vertical" >
   6:  
   7:         <TextView
   8:         android:layout_width="fill_parent"
   9:         android:layout_height="wrap_content"
  10:         android:text="@string/activity_slave_name" />
  11:  
  12:  
  13:     <RelativeLayout
  14:         android:id="@+id/relativeLayout1"
  15:         android:layout_width="match_parent"
  16:         android:layout_height="wrap_content" >
  17:  
  18:  
  19:         <TextView
  20:             android:id="@+id/textView1"
  21:             android:layout_width="wrap_content"
  22:             android:layout_height="wrap_content"
  23:             android:layout_alignParentLeft="true"
  24:             android:layout_centerVertical="true"
  25:             android:text="@string/strReceivefromMaster"
  26:             android:textSize="14sp" />
  27:  
  28:         <TextView
  29:             android:id="@+id/textView2"
  30:             android:layout_width="150dp"
  31:             android:layout_height="45dp"
  32:             android:layout_alignParentRight="true"
  33:             android:layout_alignParentTop="true"
  34:             android:focusable="false"
  35:             android:gravity="center_vertical|left"
  36:             android:text="@string/strNull"
  37:             android:textSize="16sp" />
  38:  
  39:     </RelativeLayout>
  40:  
  41:  
  42:     <RelativeLayout
  43:         android:id="@+id/relativeLayout2"
  44:         android:layout_width="match_parent"
  45:         android:layout_height="wrap_content" >
  46:  
  47:  
  48:         <TextView
  49:             android:id="@+id/textView3"
  50:             android:layout_width="wrap_content"
  51:             android:layout_height="wrap_content"
  52:             android:layout_alignParentLeft="true"
  53:             android:layout_centerVertical="true"
  54:             android:text="@string/strReturntoMaster"
  55:             android:textSize="14sp" />
  56:  
  57:         <EditText
  58:             android:id="@+id/editText1"
  59:             android:layout_width="150dp"
  60:             android:layout_height="45dp"
  61:             android:layout_alignParentRight="true"
  62:             android:layout_alignParentTop="true"
  63:             android:inputType="text" />
  64:  
  65:     </RelativeLayout>
  66:  
  67:     <RelativeLayout
  68:         android:id="@+id/relativeLayout3"
  69:         android:layout_width="match_parent"
  70:         android:layout_height="wrap_content" >
  71:  
  72:  
  73:         <Button
  74:             android:id="@+id/btnReturn"
  75:             android:layout_width="wrap_content"
  76:             android:layout_height="wrap_content"
  77:             android:layout_alignParentLeft="true"
  78:             android:layout_alignParentTop="true"
  79:             android:text="@string/strReturn" />
  80:  
  81:     </RelativeLayout>
  82:  
  83: </LinearLayout>

<strings.xml>

   1: <?xml version="1.0" encoding="utf-8"?>
   2: <resources>
   3:  
   4:     <string name="hello">Hello World, MasterActivity!</string>
   5:     <string name="app_name">IntentPassData</string>
   6:     <string name="activity_master_name">Activity : Master</string>
   7:     <string name="activity_slave_name">Activity : Slave</string>
   8:     <string name="strSendtoSlave">傳送資料 to Slave:</string>
   9:     <string name="strReceivefromSlave">接收資料 from Slave :</string>
  10:     <string name="strSend">傳送資料</string>
  11:     <string name="strNull"></string>
  12:     <string name="strReceivefromMaster">接收資料 from Master :</string>
  13:     <string name="strReturntoMaster">回覆資料 to Master :</string>
  14:     <string name="strExit">離開</string>
  15:     <string name="strReturn">返回 Master</string>
  16:     
  17: </resources>

<AndroidManifest.xml>

   1: <?xml version="1.0" encoding="utf-8"?>
   2: <manifest xmlns:android="http://schemas.android.com/apk/res/android"
   3:     package="com.android.intentpassdata"
   4:     android:versionCode="1"
   5:     android:versionName="1.0" android:installLocation="auto">
   6:  
   7:     <uses-sdk android:minSdkVersion="8" />
   8:  
   9:     <application
  10:         android:icon="@drawable/ic_launcher"
  11:         android:label="@string/app_name" >
  12:         <activity
  13:             android:name=".MasterActivity"
  14:             android:label="@string/app_name" >
  15:             <intent-filter>
  16:                 <action android:name="android.intent.action.MAIN" />
  17:  
  18:                 <category android:name="android.intent.category.LAUNCHER" />
  19:             </intent-filter>
  20:         </activity>
  21:         <activity android:name="SlaveActivity"></activity>
  22:     </application>
  23:  
  24: </manifest>

沒有留言:

張貼留言