1. 程式人生 > >安卓--組建通訊

安卓--組建通訊

實驗目的:

熟悉和掌握Android元件間通訊的方式和技巧。

實驗要求:

1. 執行課本的示例程式,理解元件通訊的方式和過程

2.設計一個主Activity和一個子Activity(Sub-Activity),使用主Activity上的按鈕啟動子Activity,並將子Activity的一些資訊返回給主Activity,並顯示在主Activity上。

 

 1 package com.flyuz.myapplication;
 2 
 3 import android.content.Intent;
 4 import android.net.Uri;
5 import android.support.v7.app.AppCompatActivity; 6 import android.os.Bundle; 7 import android.view.View; 8 import android.widget.Button; 9 import android.widget.TextView; 10 11 public class MainActivity extends AppCompatActivity { 12 Button bt1; 13 Button bt2; 14 TextView tv;
15 final int SUBACTIVITY1 = 1; 16 final int SUBACTIVITY2 = 2; 17 @Override 18 protected void onCreate(Bundle savedInstanceState) { 19 super.onCreate(savedInstanceState); 20 setContentView(R.layout.activity_main); 21 setTitle("MainActivity"); 22 bt1 = (Button) findViewById(R.id.bt1);
23 bt2 = (Button) findViewById(R.id.bt2); 24 tv = (TextView) findViewById(R.id.tv); 25 bt1.setOnClickListener(new View.OnClickListener() { 26 @Override 27 public void onClick(View view) { 28 Intent intent = new Intent(MainActivity.this, NewActivity1.class); 29 startActivityForResult(intent, SUBACTIVITY1); 30 } 31 }); 32 bt2.setOnClickListener(new View.OnClickListener() { 33 @Override 34 public void onClick(View view) { 35 Intent intent = new Intent(MainActivity.this, NewActivity2.class); 36 startActivityForResult(intent, SUBACTIVITY2); 37 } 38 }); 39 } 40 41 protected void onActivityResult(int requestCode, int resultCode, Intent data) { 42 super.onActivityResult(requestCode, resultCode, data); 43 switch (requestCode) { 44 case SUBACTIVITY1: 45 if (resultCode == 1) { 46 Uri uriData = data.getData(); 47 tv.setText(uriData.toString()); 48 } 49 case SUBACTIVITY2: 50 if (resultCode == -1) { 51 Uri uriData = data.getData(); 52 tv.setText(uriData.toString()); 53 } 54 } 55 } 56 }
MainActivity
 1 package com.flyuz.myapplication;
 2 
 3 import android.net.Uri;
 4 import android.support.v7.app.AppCompatActivity;
 5 import android.os.Bundle;
 6 import android.view.View;
 7 import android.widget.Button;
 8 import android.widget.EditText;
 9 import android.content.Intent;
10 
11 public class NewActivity1 extends AppCompatActivity {
12     Button btOk;
13     EditText et;
14     @Override
15     protected void onCreate(Bundle savedInstanceState) {
16         super.onCreate(savedInstanceState);
17         setContentView(R.layout.activity_new1);
18         setTitle("NewActivity1");
19         btOk = (Button)findViewById(R.id.btOK);
20         et = (EditText)findViewById(R.id.et);
21         btOk.setOnClickListener(new View.OnClickListener() {
22             @Override
23             public void onClick(View view) {
24                 String str = et.getText().toString();
25                 Uri data = Uri.parse("來自NewActivity1的訊息" + str);
26                 Intent result = new Intent(null, data);
27                 setResult(1, result);
28                 finish();
29             }
30         });
31     }
32 }
NewActivity1
 1 package com.flyuz.myapplication;
 2 
 3 import android.net.Uri;
 4 import android.support.v7.app.AppCompatActivity;
 5 import android.os.Bundle;
 6 import android.view.View;
 7 import android.widget.Button;
 8 import android.widget.EditText;
 9 import android.content.Intent;
10 
11 public class NewActivity2 extends AppCompatActivity {
12     Button btOk;
13     EditText et;
14     @Override
15     protected void onCreate(Bundle savedInstanceState) {
16         super.onCreate(savedInstanceState);
17         setContentView(R.layout.activity_new1);
18         setTitle("NewActivity2");
19         btOk = (Button)findViewById(R.id.btOK);
20         et = (EditText)findViewById(R.id.et);
21         btOk.setOnClickListener(new View.OnClickListener() {
22             @Override
23             public void onClick(View view) {
24                 String str = et.getText().toString();
25                 Uri data = Uri.parse("來自NewActivity2的訊息" + str);
26                 Intent result = new Intent(null, data);
27                 setResult(-1, result);
28                 finish();
29             }
30         });
31     }
32 }
NewActivity2
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:app="http://schemas.android.com/apk/res-auto"
 4     xmlns:tools="http://schemas.android.com/tools"
 5     android:layout_width="match_parent"
 6     android:layout_height="match_parent"
 7     android:gravity="center"
 8     tools:context=".MainActivity"
 9     android:orientation="vertical">
10     <Button
11         android:id="@+id/bt1"
12         android:layout_width="match_parent"
13         android:layout_height="wrap_content"
14         android:layout_weight="0.2"
15         android:text="進入NewActivity1!" />
16 
17     <Button
18         android:id="@+id/bt2"
19         android:layout_width="match_parent"
20         android:layout_height="wrap_content"
21         android:layout_weight="0.2"
22         android:text="進入NewActivity2!" />
23     <TextView
24         android:id="@+id/tv"
25         android:layout_width="match_parent"
26         android:layout_height="wrap_content"
27         android:layout_weight="0.6"
28         android:text="" />
29 
30 </LinearLayout>
layout\activity_main.xml
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:orientation="vertical"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     android:gravity="center" >
 7 
 8     <LinearLayout
 9         android:layout_width="match_parent"
10         android:layout_height="wrap_content"
11         android:orientation="horizontal"
12         android:gravity="center" >
13 
14         <TextView
15             android:id="@+id/tv"
16             android:layout_width="wrap_content"
17             android:layout_height="wrap_content"
18             android:layout_weight="0.2"
19             android:text="回信:" />
20 
21         <EditText
22             android:id="@+id/et"
23             android:layout_width="wrap_content"
24             android:layout_height="wrap_content"
25             android:layout_weight="0.8" />
26     </LinearLayout>
27 
28 
29     <Button
30         android:id="@+id/btOK"
31         android:layout_width="match_parent"
32         android:layout_height="wrap_content"
33         android:text="確定" />
34 </LinearLayout>
layout\activity_new1.xml