Intent的使用之數據傳遞

AndroidManifest代碼

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".SecondActivity">

    <LinearLayout
        android:layout_width="368dp"
        android:layout_height="495dp"
        android:orientation="vertical"
        tools:layout_editor_absoluteX="8dp"
        tools:layout_editor_absoluteY="8dp">

        <EditText
            android:id="@+id/et_second_message"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:hint="Name" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="back1"
            android:text="一般返回" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="back2"
            android:text="帶回結果的返回" />
    </LinearLayout>
</LinearLayout>

MainActivity.java

package com.example.walker.activity_01;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    protected TextView et_main_message;
    protected Button btn_main_act1;
    protected Button btn_main_act2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化視圖對象
        et_main_message = (TextView) findViewById(R.id.et_main_message);
        btn_main_act1 = (Button) findViewById(R.id.btn_main_act1);
        btn_main_act2 = (Button) findViewById(R.id.btn_main_act2);
        //設置點擊監聽
        btn_main_act1.setOnClickListener(this);
        btn_main_act2.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {
        if (v == btn_main_act1) {
            //Toast.makeText(this,"一般啓動",0).show();
            //1). 創建Intent對象(顯式)
            Intent intent = new Intent(this, SecondActivity.class);
            //2). 通過intent攜帶額外數據
            String message = et_main_message.getText().toString();
            intent.putExtra("MESSAGE", message);
            //3). 啓動Activity
            startActivity(intent);
        } else if (v == btn_main_act2) {
            //Toast.makeText(this,"帶回調啓動",0).show();
            //1). 創建Intent對象(顯式)
            Intent intent = new Intent(this, SecondActivity.class);
            //2). 通過intent攜帶額外數據
            String message = et_main_message.getText().toString();
            intent.putExtra("MESSAGE", message);
            //3). 帶回調啓動Activity
            int requestCode = 2;
            startActivityForResult(intent, requestCode);
        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        //判斷code
        if (requestCode == 2 && resultCode == 3) {
            //從data中取出數據
            String result = data.getStringExtra("RESULT");
            //顯示
            et_main_message.setText(result);
        }
    }
}

SecondActivity.java

package com.example.walker.activity_01;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.EditText;

/***
 * 界面二
 */
public class SecondActivity extends AppCompatActivity {
    private EditText et_second_message ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        et_second_message = (EditText) findViewById(R.id.et_second_message);

        //4). 得到intent對象
        Intent intent = getIntent();
        //5). 通過intent讀取額外數據
        String message = intent.getStringExtra("MESSAGE");
        //6). 顯示到EditText
        et_second_message.setText(message);
    }
    public void back1(View v) {
        //關閉當前界面
        finish();
    }
    public void back2(View v) {
        //保存一個結果
        int resultCode = 3;
        //準備一個帶額外數據的intent對象
        Intent data = new Intent();
        String result = et_second_message.getText().toString();
        data.putExtra("RESULT", result);
        //設置結果
        setResult(resultCode, data );
        //關閉當前界面
        finish();
    }
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <LinearLayout
        android:layout_width="368dp"
        android:layout_height="495dp"
        android:orientation="vertical"
        tools:layout_editor_absoluteX="8dp"
        tools:layout_editor_absoluteY="8dp">

        <EditText
            android:id="@+id/et_main_message"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:hint="Name" />

        <Button
            android:id="@+id/btn_main_act1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="一般啓動" />

        <Button
            android:id="@+id/btn_main_act2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="帶回調啓動" />
    </LinearLayout>
</LinearLayout>

activity_second.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".SecondActivity">

    <LinearLayout
        android:layout_width="368dp"
        android:layout_height="495dp"
        android:orientation="vertical"
        tools:layout_editor_absoluteX="8dp"
        tools:layout_editor_absoluteY="8dp">

        <EditText
            android:id="@+id/et_second_message"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:hint="Name" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="back1"
            android:text="一般返回" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="back2"
            android:text="帶回結果的返回" />
    </LinearLayout>
</LinearLayout>

界面展示:





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