使用Intent来启动Activity并传递参数
生活随笔
收集整理的這篇文章主要介紹了
使用Intent来启动Activity并传递参数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.背景:
要創建并顯示一個Activity,可以調用startActivity,并傳遞給它一個Intent,如下面的代碼所示:
startActivity(Intent myIntent);
可以構造Intent來顯示地指定要打開的Activity類,或者包含一個目標Activity必須執行的動作。在后一種情況中,運行時將會使用一個稱為“Intent解析(Intent resolution)”的過程來動態選擇Activity。
還可以通過向Intent添加extra來向目標Activity發送額外的數據。
2.實例
利用startActivity創建并顯示一個Activity,并向其傳遞數據。
1》程序啟動時:
其布局代碼如下:
<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="在這里輸入要傳送的內容..." /><Button android:id="@+id/startAnotherActivity"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="開始傳遞"/></LinearLayout>
其中“開始傳遞”的事件處理代碼如下:
// 啟動子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》輸入數據,如下圖所示
3》點擊“開始傳遞”,如下圖所示
可以看到已經成功,那么是如何接收到該數據呢?
private void getINFO() {// 獲取傳遞過來的信息。String infoString = getIntent().getStringExtra(RETURN_INFO);subTextView.setText(infoString);}
3.詳細代碼如下:
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;// 請求碼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() {// 得到相應控件的引用infoEditText = (EditText) findViewById(R.id.info_et);startAnotherButton = (Button) findViewById(R.id.startAnotherActivity);// 注冊事件startAnotherButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubstartAnotherActivity();}});}// 啟動子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;// 用于唯一標識要返回的信息// 應該盡量的長,最好加上所在類的全名,即:包名+類名+參數名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() {// 得到相應控件引用subTextView = (TextView) findViewById(R.id.subTextView);}private void getINFO() {// 獲取傳遞過來的信息。String infoString = getIntent().getStringExtra(RETURN_INFO);subTextView.setText(infoString);}}
總結
以上是生活随笔為你收集整理的使用Intent来启动Activity并传递参数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从Activity返回结果
- 下一篇: Handler 基本用法--线程间传值