使用Intent来启动Activity并传递参数
生活随笔
收集整理的這篇文章主要介紹了
使用Intent来启动Activity并传递参数
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1.背景:
要?jiǎng)?chuàng)建并顯示一個(gè)Activity,可以調(diào)用startActivity,并傳遞給它一個(gè)Intent,如下面的代碼所示:
startActivity(Intent myIntent);
可以構(gòu)造Intent來(lái)顯示地指定要打開的Activity類,或者包含一個(gè)目標(biāo)Activity必須執(zhí)行的動(dòng)作。在后一種情況中,運(yùn)行時(shí)將會(huì)使用一個(gè)稱為“Intent解析(Intent resolution)”的過(guò)程來(lái)動(dòng)態(tài)選擇Activity。
還可以通過(guò)向Intent添加extra來(lái)向目標(biāo)Activity發(fā)送額外的數(shù)據(jù)。
2.實(shí)例
利用startActivity創(chuàng)建并顯示一個(gè)Activity,并向其傳遞數(shù)據(jù)。
1》程序啟動(dòng)時(shí):
其布局代碼如下:
<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:orientation="vertical"tools:context="com.demo.parameterdemo.MainActivity" ><EditTextandroid:id="@+id/info_et"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="在這里輸入要傳送的內(nèi)容..." /><Button android:id="@+id/startAnotherActivity"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="開始傳遞"/></LinearLayout>
其中“開始傳遞”的事件處理代碼如下:
// 啟動(dòng)子Activity,并從中獲取返回信息private void startAnotherActivity() {Intent startIntent = new Intent(getApplicationContext(),AnotherActivity.class);startIntent.putExtra(AnotherActivity.RETURN_INFO, infoEditText.getText().toString());/** //也可以使用這種方式 * Bundle argBundle=new Bundle();* argBundle.putString(AnotherActivity.RETURN_INFO,* infoEditText.getText().toString()); * startIntent.putExtras(argBundle);*/startActivity(startIntent);}
2》輸入數(shù)據(jù),如下圖所示
3》點(diǎn)擊“開始傳遞”,如下圖所示
可以看到已經(jīng)成功,那么是如何接收到該數(shù)據(jù)呢?
private void getINFO() {// 獲取傳遞過(guò)來(lái)的信息。String infoString = getIntent().getStringExtra(RETURN_INFO);subTextView.setText(infoString);}
3.詳細(xì)代碼如下:
1》MainActivity.java
package com.demo.parameterdemo;import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView;public class MainActivity extends Activity {// 聲明控件private EditText infoEditText;private Button startAnotherButton;// 請(qǐng)求碼private static final int ACTIVITY_REQUEST_CODE = 1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);init();}// 初始化private void init() {// 得到相應(yīng)控件的引用infoEditText = (EditText) findViewById(R.id.info_et);startAnotherButton = (Button) findViewById(R.id.startAnotherActivity);// 注冊(cè)事件startAnotherButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubstartAnotherActivity();}});}// 啟動(dòng)子Activity,并從中獲取返回信息private void startAnotherActivity() {Intent startIntent = new Intent(getApplicationContext(),AnotherActivity.class);startIntent.putExtra(AnotherActivity.RETURN_INFO, infoEditText.getText().toString());/** //也可以使用這種方式 * Bundle argBundle=new Bundle();* argBundle.putString(AnotherActivity.RETURN_INFO,* infoEditText.getText().toString()); * startIntent.putExtras(argBundle);*/startActivity(startIntent);}}
2》SubActivity.java
package com.demo.parameterdemo;import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView;public class AnotherActivity extends Activity {// 聲明控件private TextView subTextView;// 用于唯一標(biāo)識(shí)要返回的信息// 應(yīng)該盡量的長(zhǎng),最好加上所在類的全名,即:包名+類名+參數(shù)名public static final String RETURN_INFO = "com.demo.parameterdemo.SubActivity.info";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_another);init();getINFO();}// 初始化private void init() {// 得到相應(yīng)控件引用subTextView = (TextView) findViewById(R.id.subTextView);}private void getINFO() {// 獲取傳遞過(guò)來(lái)的信息。String infoString = getIntent().getStringExtra(RETURN_INFO);subTextView.setText(infoString);}}
總結(jié)
以上是生活随笔為你收集整理的使用Intent来启动Activity并传递参数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 从Activity返回结果
- 下一篇: Handler 基本用法--线程间传值