Android的小程序---使用Intent在Activity之間傳遞數據

  • 首先我們先理解一下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)代碼部分編寫完成,運行結果如圖:
這裏寫圖片描述

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章