1. 程式人生 > >初識Intent-實現從一個Activity跳轉至另一個Activity並實現單向傳值

初識Intent-實現從一個Activity跳轉至另一個Activity並實現單向傳值

本篇部落格主要講解如何使用Intent來實現Activity之間的跳轉.
本篇部落格實現的是一個簡單的註冊跳轉的Demo

實現步驟:

  1. 新建一個Activity的佈局XML檔案
  2. 新建一個Activity並使用setContentView()方法關聯該Activity的佈局檔案
  3. 例項化一個Intent物件
  4. putExtra()方法實現資料的單向傳遞
  5. getintent()方法 返回一個intent例項
  6. getStringExtra()方法接受資料

一.兩個介面設計展示

  1. MainActivity的佈局檔案

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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="com.ggq.intent.MainActivity" android:orientation="vertical" android:weightSum="1">
<LinearLayout android:orientation="horizontal" android:layout_width
="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal">
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:text="使用者名稱:" android:id="@+id/tv1" /> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="textPersonName" android:hint="請輸入使用者名稱" android:ems="10" android:id="@+id/et1" android:layout_weight="1" /> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:text="密 碼:" android:id="@+id/tv2" /> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="textPassword" android:ems="10" android:hint="請輸入密碼" android:id="@+id/et2" android:layout_weight="1" /> </LinearLayout> <LinearLayout android:gravity="center" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="下一步" android:id="@+id/btn_next" android:textSize="25dp" /> </LinearLayout> </LinearLayout>

2.Activity02的佈局檔案

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

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:id="@+id/textView" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:text="使用者名稱:"
            android:id="@+id/tv3" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:id="@+id/tv4" />

    </LinearLayout>

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:text="密    碼:"
            android:id="@+id/tv5" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:id="@+id/tv6" />
    </LinearLayout>

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:layout_gravity="center_horizontal">

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="確認資訊並註冊"
            android:id="@+id/btn_sure"
            android:textSize="25dp" />
    </LinearLayout>
</LinearLayout>

二.Java程式碼實現

  1. MainActivity程式碼

package com.ggq.intent;

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

public class MainActivity extends AppCompatActivity {

    private Button button_next=null;
    private EditText et_username = null;
    private EditText et_pwd = null;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        et_username=(EditText) findViewById(R.id.et1);
        et_pwd=(EditText) findViewById(R.id.et2);
        button_next = (Button) findViewById(R.id.btn_next);
        button_next.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, Activity02.class);
                String name = et_username.getText().toString().trim();
                String pwd = et_pwd.getText().toString().trim();
                intent.putExtra("username", name);
                intent.putExtra("pwd", pwd);
                MainActivity.this.startActivity(intent);
            }
        });
    }
}


2.Activity02程式碼

package com.ggq.intent;

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;
import android.widget.Toast;

public class Activity02 extends AppCompatActivity{
    Button btn_sure=null;
    TextView tv_name=null;
    TextView tv_pwd=null;
    protected void onCreate( Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity02);
        Intent intent = super.getIntent();
        String getname = intent.getStringExtra("username");
        String getpwd = intent.getStringExtra("pwd");
        btn_sure = (Button) findViewById(R.id.btn_sure);
        tv_name = (TextView) findViewById(R.id.tv4);
        tv_pwd = (TextView) findViewById(R.id.tv6);

        tv_name.setText(getname);
        tv_pwd.setText(getpwd);

        btn_sure.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                Toast.makeText(Activity02.this, "註冊成功!", Toast.LENGTH_SHORT).show();
            }
        });

    }
}

三.AndroidManifest配置

使用一個新的Activity必須在AndroidManifest清單中註冊才能使用
註冊程式碼如下:

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".Activity02">

        </activity>
    </application>

四.最終效果展示

MainActivity Activity02