Android 四大組件之 Activity-帶值跳轉

從一個Activity跳轉到另外一個Activity,並且可以帶值跳轉,但我們日常生活中使用App時會經常遇到這種狀況,假設有某個界面A,點擊上面不同的按鈕會啓動不同的界面B、C、D。。。,這些界面會處理某個業務並將處理結果返回給界面A,可以採用帶返回值得跳轉來實現這功能
Activity帶返回值跳轉
實現Activity帶返回值的跳轉,主要通過3個方法:
StartActivityForResult(Intent intent,requestCode):用於啓動另一個Activity,並並獲取其返回值
參數intent表示意圖,用於指定從哪一個界面去獲取返回值。
參數requestCode表示請求碼,要求大於等於0。

setResult(resultCode,data):用於返回第二個界面處理後的數據
參數resultCode表示返回碼,可以用任意的整型值來表示,一般會使用Activity中的常量來表示,RESULT_CANCELED(表示0)、RESULT_OK(表示-1)、RESULT_FIRST_USER(表示1)
參數data表示返回的數據,用Intent對象來存放這些數據。
在設置了返回值後,需要調用finish()方法類銷燬當前界面,才能夠返回到上一個界面。
OnActivityResult(int requestCode,int resultCode,Intent data):用於處理第二個界面的返回值
用於處理第二個界面的返回值
requestCode就是startActivityForResult方法中的請求碼resultCode表示第二個界面的返回碼data就是返回的數據。
三個方法的使用介紹

  1. congdiyige頁面跳轉到第二個頁面時,使用startActivityForResult方法
  2. 在第二個頁面傳回數據時,使用setResult方法
  3. 數據傳回來之後使用onActivityResult方法處理數據
    代碼如下:

MainActivity.java
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.EditText;
public class MainActivity extends Activity {
Button btn;
EditText et;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//獲取組件對象
et=(EditText) findViewById(R.id.editText1);
btn=(Button) findViewById(R.id.button1);

    //設置監聽
    btn.setOnClickListener(new OnClickListener() {
        //點擊事件
        @Override
        public void onClick(View v) {
            //創建意圖對象,不要忘記註冊SecondActivity
            Intent intent = new Intent();
            intent.setClass(MainActivity.this, SecondActivity.class);
            //跳轉獲取返回值 11,表示requestcode 
            startActivityForResult(intent, 11);
        }
    });
}

//用於處理第二個界面的返回值
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if(data!=null){//判斷意圖是否爲空
        String str=data.getStringExtra("msg");
        if(requestCode==11){
            et.setText(str);
        }
    }
}

}
SecondActivity.java

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.EditText;

public class SecondActivity extends Activity {
    EditText et;
    Button btn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        //獲取組件對象
        et=(EditText) findViewById(R.id.editText2);
        btn=(Button) findViewById(R.id.button2);
        //設置監聽事件
        btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {//處理監聽事件
                Intent intent=new Intent();

                //獲取輸入的數據
                String str=et.getText().toString().trim();
                //將數據綁定到intent上
                intent.putExtra("msg", str);
                //回傳數據20,爲resultCode
                setResult(20, intent);
            }
        });
    }
}

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="跳轉" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/button1"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="76dp"
        android:ems="10" >

        <requestFocus />
    </EditText>

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="23dp"
        android:text="第一個界面" />

</RelativeLayout>

activity_second.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="回傳" />

    <EditText
        android:id="@+id/editText2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="81dp"
        android:ems="10" >

        <requestFocus />
    </EditText>

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="18dp"
        android:text="第二個界面" />
</RelativeLayout>

結果
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述

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