首先我們先理解一下Activity的生命週期:
Android活動程序Activity和意圖方法Intent之間的關係
Activity之間的通信可以使用Intent,在啓動另外的Activity的時候,我們可以傳遞Intent意圖,通過Activity類提供的 startActivity方法,Intent類提供了一個從“發件人”到“收件人”的構造方法Intent(Context packageContext, Class
package com.example.intent;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.RadioButton;
import android.widget.RadioGroup;
public class Activity1 extends Activity {
RadioGroup RG_OS;
RadioButton RG_OS_RB1;
RadioButton RG_OS_RB2;
RadioButton RG_OS_RB3;
@Override
public void onCreate(Bundle savedInstanceState) {
Button button_submit,button_back;
super.onCreate(savedInstanceState);
//根據佈局文件activity1.xml生成界面
setContentView(R.layout.activity1);
//根據XML定義生成取得RadioGroup、RadioButton、Button對象
RG_OS=(RadioGroup)findViewById(R.id.RG_OS);
RG_OS_RB1=(RadioButton)findViewById(R.id.RG_OS_RB1);
RG_OS_RB2=(RadioButton)findViewById(R.id.RG_OS_RB2);
RG_OS_RB3=(RadioButton)findViewById(R.id.RG_OS_RB3);
button_submit=(Button)findViewById(R.id.button_submit);
//使用setOnClickListener註冊按鈕單擊事件監聽器
button_submit.setOnClickListener(new ButtonClickListener());
}
//定義按鈕button_submit單擊監聽器。當單擊button_submit按鈕時,onClick方法被調用
class ButtonClickListener implements OnClickListener{
public void onClick(View arg0){
//新建一個Inter對象
Intent myintent=new Intent();
//指定Intent對象的目標組件是Activity2
myintent.setClass(Activity1.this,Activity2.class);
//根據用戶選擇不同的單選按鈕,向Intent對象的Extra屬性中存不同的值
if(RG_OS_RB1.isChecked())
myintent.putExtra("selected", (String)RG_OS_RB1.getText());
else if (RG_OS_RB2.isChecked())
myintent.putExtra("selected", (String)RG_OS_RB2.getText());
else if (RG_OS_RB3.isChecked())
myintent.putExtra("selected", (String)RG_OS_RB3.getText());
else
myintent.putExtra("selected","null");
//利用startActivity()啓動新的Activity,即Activity2
Activity1.this.startActivity(myintent);
//關閉當前的Activity
Activity1.this.finish();
}
}
}
(2)新建一個類Activity2,編寫Activity2.java的代碼如下:
package com.example.intent;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class Activity2 extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//根據佈局文件activity2.xml生成界面
setContentView(R.layout.activity2);
Button button_back = (Button)findViewById(R.id.button_back);
button_back.setOnClickListener(new ButtonClickListener());
//生成文本框對象
TextView textview=(TextView)findViewById(R.id.textview);
//獲取Activity傳遞的Intent
Intent myintent=this.getIntent();
String selected_radiobutton=myintent.getStringExtra("selected");
if(selected_radiobutton=="null")
textview.setText("沒有選擇任何系統");
else
textview.setText(selected_radiobutton+"被選中");
}
class ButtonClickListener implements OnClickListener{
public void onClick(View arg0){
//新建一個Intent對象,並指定啓動程序Activity1
Intent myintent=new Intent();
myintent.setClass(Activity2.this,Activity1.class);
Activity2.this.startActivity(myintent);
Activity2.this.finish();
}
}
}
(3)編寫Activity2.xml代碼如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
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="第二個Activity" />
<Button android:id="@+id/button_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="返回" />
<TextView
android:id="@+id/textview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="" />
</LinearLayout>
(4)代碼部分編寫完成,運行結果如圖: