实训5 组件通信
一、【实训目的】
(1) Activity的作用及应用
(2) Intent组件通信
(3) Bundle类在组件通信中的作用
-
【实训步骤和要求】
1、使用布局文件实现以下三个界面
2、页面的功能:
1)、点击“页面1”的发送数据按钮,可以将文本框“需要发送的数据”的内容发送到页面二“接收到第一页信息”中文本框中,并跳转到页面2;
2)点击“页面2”中的“下一页”可以跳转到“页面3”;
3)点击“页面3”中的“关闭并返回值给上一页”按钮,可以将文本框中的值发送到第二页;
FirstActivity源代码:
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.*;
public class FirstActivity extends Activity{
private EditText shuju;
private Button btnnext1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.first);
shuju = (EditText)findViewById(R.id.number1);
btnnext1=(Button)findViewById(R.id.btnnext1);
btnnext1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View arg0){
// TODO Auto-generated method stub
Intent intent=new Intent(FirstActivity.this,SecondActivity.class);
Bundle bundle=new Bundle();
String value=shuju.getText().toString();
bundle.putString("name1",value); //把name作为键,Tom作为值放进bundle中
intent.putExtras(bundle);
startActivityForResult(intent,0);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
SecondActivity源代码:
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.*;
public class SecondActivity extends Activity{
private EditText number2,number3;
private Button btnnext2;
private Button btnprevious2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
number2= (EditText) findViewById(R.id.number2);
number3= (EditText) findViewById(R.id.number3);
btnnext2=(Button)findViewById(R.id.btnnext2);
btnprevious2=(Button)findViewById(R.id.btnprevious2);
Intent intent=getIntent();
Bundle bundle1=intent.getExtras();
Bundle bundle2=intent.getExtras();
String name1=bundle1.getString("name1");
String name2=bundle2.getString("name2");
number2.setText(name1);
number3.setText(name2);
btnnext2.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View arg0){
// TODO Auto-generated method stub
Intent intent=new Intent(SecondActivity.this,ThirdActivity.class);
startActivityForResult(intent,0);
}
});
btnprevious2.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View arg0){
// TODO Auto-generated method stub
Intent intent=new Intent(SecondActivity.this,FirstActivity.class);
startActivityForResult(intent,0);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
ThirdActivity源代码:
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.*;
public class ThirdActivity extends Activity{
private EditText shuju1;
private Button btnprevious3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.third);
shuju1 = (EditText)findViewById(R.id.number4);
btnprevious3=(Button)findViewById(R.id.btnprevious3);
btnprevious3.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View arg0){
// TODO Auto-generated method stub
Intent intent=new Intent(ThirdActivity.this,SecondActivity.class);
Bundle bundle=new Bundle();
String value1=shuju1.getText().toString();
bundle.putString("name2",value1); //把name作为键,Tom作为值放进bundle中
intent.putExtras(bundle);
startActivityForResult(intent,0);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
first.XML源代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:padding="20dp" >
<Button
android:id="@+id/btnnext1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="发送数据" />
<EditText
android:id="@+id/number1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:inputType="text"
android:text="需要发送的数据" />
</LinearLayout>
second.XML源代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:padding="20dp" >
<TableLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TableRow>
<TextView
android:id="@+id/txt2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="接收到第一页信息:" />
<EditText
android:id="@+id/number2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</TableRow>
</TableLayout>
<TableLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TableRow>
<TextView
android:id="@+id/txt3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="接收到第三页信息:" />
<EditText
android:id="@+id/number3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</TableRow>
</TableLayout>
<TableLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal">
<TableRow>
<Button
android:id="@+id/btnprevious2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="上一页" />
<Button
android:id="@+id/btnnext2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="下一页" />
</TableRow>
</TableLayout>
</LinearLayout>
third源代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:padding="20dp" >
<EditText
android:id="@+id/number4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:inputType="text"
android:ems="10" >
<requestFocus />
</EditText>
<Button
android:id="@+id/btnprevious3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="关闭并返回值给上一页" />
</LinearLayout>
Strings.xml源代码:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name1">第一页</string>
<string name="app_name2">第二页</string>
<string name="app_name3">第三页</string>
<string name="action_settings">Settings</string>
<string name="hello_world">Hello world!</string>
</resources>
AndroidManifest.xml源代码:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.qq1"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.qq1.FirstActivity"
android:label="@string/app_name1" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.example.qq1.SecondActivity"
android:label="@string/app_name2" >
</activity>
<activity
android:name="com.example.qq1.ThirdActivity"
android:label="@string/app_name3" >
</activity>
</application>
</manifest>
运行结果截图:
附注:该专栏是博主上学时的实训项目,可供访客练习与参考。代码质量不是很好,但能实现,仅供参考!