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> |
(7)new
一個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()例項,傳入Context和Class型別的引數 //對應MainActivity.this 和被啟動的Activity的類定義 TheAty.class Intent i = new Intent(MainActivity.this,TheAty.class); //通過Intent物件,呼叫putExtra()方法,傳參 //這裡傳入String和String型別的引數,實際上就是鍵值對 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】