1. 程式人生 > >Activity之間傳遞引數(一)

Activity之間傳遞引數(一)

-------siwuxie095

傳遞簡單資料

1)首先建立一個專案:SendArgs

(2)選擇API:21 Android 5.0

3)選擇Empty Activity

(4)預設

5)完成,一覽:

6)先進activity_main.xml 裡的 Text 手動新增一個Button,

刪掉自帶的TextView,如下:

<?xmlversion="1.0"encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:id="@+id/activity_main"

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.siwuxie095.sendargs.MainActivity">

<Button

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/btnStartAty"

android:text="啟動另一個Activity"/>

</RelativeLayout>

7new 一個Empty Activity:TheAty

(8)給activity_the_aty.xml新增一個TextView,如下:

<?xmlversion="1.0"encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:id="@+id/activity_the_aty"

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.siwuxie095.sendargs.TheAty">

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Hello World"

android:id="@+id/tv"/>

</RelativeLayout>

9)在MainActivity.java 中新增:findViewById(R.id.btnStartAty)

和setOnClickListener(new OnClick…),會自動生成程式碼,接著在onClick()

函式裡建立一個Intent,通過 Intent 的 putExtra() 傳參,最後通過 startActivity()

把Intent物件傳入:

package com.siwuxie095.sendargs;

import android.content.Intent;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.view.View;

public class MainActivity extends AppCompatActivity {

@Override

protectedvoid onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

findViewById(R.id.btnStartAty).setOnClickListener(new View.OnClickListener() {

@Override

publicvoid onClick(View v) {

//建立一個new Intent()例項,傳入ContextClass型別的引數

//對應MainActivity.this 被啟動的Activity的類定義 TheAty.class

Intent i = new Intent(MainActivity.this,TheAty.class);

//通過Intent物件,呼叫putExtra()方法,傳參

//這裡傳入StringString型別的引數,實際上就是鍵值對

i.putExtra("data","你好我是傳遞的引數");

//傳入i

startActivity(i);

}

});

}

}

(10)在 TheAty.java 中獲取資料,如下:

package com.siwuxie095.sendargs;

import android.content.Intent;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.widget.TextView;

public class TheAty extends AppCompatActivity {

private TextView tv;

@Override

protectedvoid onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_the_aty);

//TheAty是通過MainActivity中的Intent啟動,直接通過getIntent()方法

//獲取與這個Activity相關的Intent

Intent i=getIntent();

//要訪問TextView,先在上面宣告

//findViewById()的返回值在編譯時只能檢視到型別是View,而事實上是TextView型別

//需要強制型別轉換

tv= (TextView) findViewById(R.id.tv);

//呼叫setText()方法設定字串,這裡字串通過Intent獲取

tv.setText(i.getStringExtra("data"));

}

}

(11)傳送到手機,執行一覽:

【made by siwuxie095】