1. 程式人生 > >一個例項弄明白startActivityForResult和intent怎麼使用

一個例項弄明白startActivityForResult和intent怎麼使用

一、Intent實現Activity之間的切換

1、建構函式法:

[java] view plain copy  print?
  1. Intent intent = new Intent(this , OtherActivity.class); //兩個引數:第一個是上下文物件,第二個是要切換的Activity的class位元組碼
  2. startActivity(intent);   

2、setClass方法:

[java] view plain copy  print?
  1. Intent intent = new Intent();  
  2. intent.setClass(this
    , OtherActivity.class); //設定要啟用的元件
  3. startActivity(intent);        

3、setClassName方法:

[java] view plain copy  print?
  1. Intent intent = new Intent();  
  2. intent.setClassName(this"cn.itcast.activitys.OtherActivity");  
  3. startActivity(intent);  

4、setComponent方法:

[java] view plain copy  print?
  1. Intent intent = 
    new Intent();  
  2. intent.setComponent(new ComponentName(this,OtherActivity.class));  
  3. startActivity(intent);  

二、startActivityForResult用來傳遞引數

首先,我們是定義了兩個Activity,就是兩個介面:A和B。

A介面包含一個按鈕:登陸

B介面包含兩個輸入框和一個登陸按鈕:使用者名稱和密碼輸入框、登陸按鈕。

要求,從A介面傳遞一個字串,B介面能夠顯示。

B介面輸入的使用者名稱和密碼,在點選登陸後,可以在A介面顯示。

首先,我們看下A介面的介面:

[html]
 view plain copy  print?
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3.     android:layout_width="fill_parent"
  4.     android:layout_height="fill_parent"
  5.     android:orientation="vertical">
  6.     <Button
  7.         android:layout_width="fill_parent"
  8.         android:layout_height="wrap_content"
  9.         android:text="@string/button"
  10.         android:onClick="openActivity"
  11.         />
  12. </LinearLayout>
上邊包含一個按鈕,這個按鈕定義了一個onClick屬性,設定了點選方法:openActivity

然後,我們編寫A介面的Java呼叫程式碼(MainActivity.java):

[java] view plain copy  print?
  1. package cn.itcast.activitys;  
  2. import android.app.Activity;  
  3. import android.content.ComponentName;  
  4. import android.content.Intent;  
  5. import android.os.Bundle;  
  6. import android.view.View;  
  7. import android.widget.Toast;  
  8. publicclass MainActivity extends Activity {  
  9.     /** Called when the activity is first created. */
  10.     @Override
  11.     publicvoid onCreate(Bundle savedInstanceState) {  
  12.         super.onCreate(savedInstanceState);  
  13.         setContentView(R.layout.main);  
  14.     }  
  15.     publicvoid openActivity(View v){ //在
  16.         Intent intent = new Intent(this , OtherActivity.class);  
  17.         Bundle bundle = new Bundle();  
  18.         bundle.putString("result""我是從MainActivity傳遞過來的引數");  
  19.         intent.putExtras(bundle);  
  20.         startActivityForResult(intent, 200); //兩個引數:第一個是意圖物件,第二個是請求碼requestCode
  21.     }  
  22.     @Override
  23.     protectedvoid onActivityResult(int requestCode, int resultCode, Intent data) {  
  24.         String name="",password="";  
  25.         if(resultCode == 30){  //判斷返回碼是否是30
  26.             name = data.getStringExtra("name").toString();  
  27.             password = data.getStringExtra("password").toString();  
  28.             Toast.makeText(this"您登陸的使用者名稱是:"+name+",密碼是:"+password, 1).show();  
  29.         }     
  30.         super.onActivityResult(requestCode, resultCode, data);        
  31.     }  
  32. }  
在openActivity(View v)這個方法中,我們定義了一個Bundle物件,然後傳入一個名為“result”的屬性引數,然後放在intent物件中,通過startActivityForResult(Intent intent,int requestCode)這個方法進行傳遞。可以看出我們傳遞到了OtherActivity.java這個檔案了

然後,我們要先看下OtherActivity.java裡邊的程式碼:

[java] view plain copy  print?
  1. package cn.itcast.activitys;  
  2. import android.app.Activity;  
  3. import android.content.Intent;  
  4. import android.os.Bundle;  
  5. import android.view.View;  
  6. import android.widget.EditText;  
  7. import android.widget.TextView;  
  8. import android.widget.Toast;  
  9. publicclass OtherActivity extends Activity {  
  10.     private EditText name;  
  11.     private EditText password;  
  12.     @Override
  13.     protectedvoid onCreate(Bundle savedInstanceState) {  
  14.         super.onCreate(savedInstanceState);  
  15.         setContentView(R.layout.otheractivity);  
  16.         Intent intent = getIntent(); //用於啟用它的意圖物件:這裡的intent獲得的是上個Activity傳遞的intent
  17.         Bundle bundle = intent.getExtras();  
  18.         String result = bundle.getString("result");  
  19.         Toast.makeText(this, result, 1).show();  
  20.     }  
  21.     publicvoid closeActivity(View v){  
  22.         Intent data = new Intent();  
  23.         name = (EditText)this.findViewById(R.id.name);  
  24.         password = (EditText)this.findViewById(R.id.password);  
  25.         data.putExtra("name", name.getText().toString());  
  26.         data.putExtra("password", password.getText().toString());  
  27.         setResult(30, data); //設定返回資料 
  28.         this.finish(); //關閉當前Activity   
  29.     }  
  30. }  
在onCreae()方法中,我們呼叫Toast物件把獲得的引數在介面中顯示出來。

然後我們呼叫otheractivity.xml介面中的按鈕的onClick方法來呼叫closeActivity()方法。

通過這個方法,我們可以把文字框中輸入的使用者名稱和密碼通過setResult(int resultCode,Intent intent)方法傳遞迴A介面,呼叫this.finish()關閉當前介面。

接下來,我們看下B介面的原始碼:otheractivity.xml

[html] view plain copy  print?
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3.     android:layout_width="fill_parent"
  4.     android:layout_height="fill_parent"
  5.     android:orientation="vertical">
  6.     <TextView
  7.         android:layout_width="fill_parent"
  8.          android:layout_height="wrap_content"
  9.          android:text="@string/name"
  10.         

    相關推薦

    一個例項明白startActivityForResultintent怎麼使用

    一、Intent實現Activity之間的切換 1、建構函式法: [java] view plain copy  print? Intent intent = new Intent(this , OtherActivity.class); //兩個引數:第一個是上下文物件,第二個是要切換的A

    明白CMSG1,就靠這一篇了

    目錄 1 CMS收集器 安全點(Safepoint) 安全區域 2 G1收集器 卡表(Card Table) 3 總結 4

    一張圖明白開源協議-GPL、BSD、MIT、Mozilla、ApacheLGPL 之間的區別

    tail 協議 ref detail 技術 之間 lan ftw 說明 導讀 在開源軟件中經常看到各種協議說明,GPL、BSD、MIT、Mozilla、Apache和LGPL。 - 這些協議之間的有什麽區別 - 如何選擇合適的開源協議 請看下文,特作記錄一篇,以

    廣告、促銷、推廣的區別聯系,這下明白

    網站建設 網站優化 網站推廣 很多人都會混雜廣告、促銷、推行三者之間的聯系,覺得都差不多,常常把廣告、促銷都叫成推行,這顯然是不對的。   還有的企業營銷人員乃至領導人,一聽說4p中的促銷,就以為是搞打折的促銷,這都是不對的。   促銷   促銷是4p中第4個p的促銷組合戰略,留意4p都是組合戰略

    Android Studio 一個完整的APP例項(附原始碼資料庫)

    前言: 這是我獨立做的第一個APP,是一個記賬本APP。 This is the first APP, I've ever done on my own. It's a accountbook APP.   原始碼: https://github.com/AnneHan/accoun

    設計模式必須要明白的組合繼承

    前言 ​ 哇,最近再看Java程式設計思想,看到了第七章複用類中7.5在組合和繼承之間選擇。讓我對組合和繼承有了新的認知,前一段時間把設計模式看完了,雖然說看了幾遍,但是思想永遠的記不住,理解不了。但是今天,結合著組合和繼承讓我有了新的認知,故想給學設計模式的同學一個我的理解思路。 組合和繼承 理

    終於明白了Eclipse中MavenSVN,真不容易!

    昨天折騰了一天,從早上9點到半夜1點,總算是折騰明白了Eclipse中安裝Maven的方法,其實就是什麼也不做——因為Oxygen版本中已經集成了Maven外掛。並且,匯入Maven專案也並不像我上一篇文章Eclipse匯入Maven專案,實在算得上是歷經千辛萬

    一圖明白DFT、DTFTDFS之間的關系

    既然 進行 mat 運算 不知道 不能 art 疑惑 問題 轉自:https://www.cnblogs.com/BitArt/archive/2012/11/24/2786390.html 很多同學學習了數字信號處理之後,被裏面的幾個名詞搞的暈頭轉向,比如DFT,

    java中的switch語句中breakcontinue的區別--------總算是明白

    1、先上一個例子:   package com.test; import java.util.ArrayList; import java.util.List; public class SwitchTest {         public void ss(List<Integer> l){

    一個例項四點忠告

    看了一篇微信文章,自己提煉和修改了一下,也算自己的一點感悟吧 一、一個例項 趕集網和瓜子二手車的創始人楊浩湧曾經分享過一個故事:  因為楊浩湧最早是研發出身,是很優秀的產品經理,而且他手下也有一支非常強的技術和產品團隊,產品體驗要比當時的競爭對手58同城好非常多。  

    asp.net mvc常用的資料註解驗證以及entity framework資料對映的一個例項

    下面是model層的管理員資訊表 在此Model上我們用到了asp.net mvc的資料註解和驗證,可用來作為後端驗證,entity framework對資料庫的對映 using System; 2 using System.Collections.Generic;

    定義平面中的一個Circle類, 1編寫一個無引數建構函式, 2編寫一個有參的建構函式 3在主函式中呼叫無參建構函式生成圓的例項c1,呼叫有參建構函式生成圓的例項c2,呼叫例項方法判斷c1c2是否重

    定義平面中的一個Circle類, 1編寫一個無引數建構函式, 2編寫一個有參的建構函式 3在主函式中呼叫無參建構函式生成圓的例項c1,呼叫有參建構函式生成圓的例項c2,呼叫例項方法判斷c1和c2是否重疊 class Point { double x; double y

    shared_ptrweak_ptr智慧指標結合使用的一個例項

    結合shared_ptr、weak_ptr一個例項          感覺這個例子很好, 結合了很多知識技術。這個例項功能是簡單模擬實現std::vector<std::string> 部分功能。 (只是非常簡單一些操作),當然也可以繼續擴充套件,甚至擴充套件

    retrofit的模擬學習Eventbus的傳遞一個bean物件Intent傳遞一個bean物件

    一直想好好學習使用retrofit今天就學習總結 首先是github的地址連線: 之後是依賴: compile 'com.squareup.retrofit2:retrofit:2.3.0' 注意: Retrofit requires at

    一個例項讓你徹底明白Activity的4種啟動模式

    首先,我們得有一個概念,就是啟動的Activity都是放在相應的任務棧中。按Back鍵的時候Activity會從任務棧中返回,當任務棧為空時系統就會回收這個任務棧。 那麼我們為什麼需要這4中啟動模式呢?我們新建Activity的並在Androidmanifes

    通過一個WPF例項進一步理解委託事件

    在前寫過“淺談C#中的委託”和“淺談C#中的事件”兩篇部落格,內容有些抽象,似乎難以說明委託和事件的關係。 今天通過一個小程式來進一步說明二者的使用及聯絡。 首先新建一個WPF應用程式,取名TestDelegateAndEvent。 在.xmal中加入

    jafka安裝配置啟動一個自帶例項手寫一個例項

    Jafka 是一個開源的/效能良好的分散式訊息系統。在上一篇文章中有所簡單介紹。下面是一篇簡單的入門文件。更多詳細的文件參考wiki。Step 1: 下載最新的安裝包 $wget https://github.com/downloads/adyliu/jafka/jafka-1.0.tgz $tar x

    一個關於A標簽分頁的怪問題!

    boot 題解 input page mvc def data tel 問題解決 用bootstrap做了用戶電話號碼查詢的前端頁面。 並且用了MVCPager分頁。 Bootstrap前端頁如下: 一開始使用了用A標簽,分頁成功後,我進入第二頁,點擊這個A標簽,頁面會自動

    跳槽3次才算明白的4個秘密,所有公司都不會告訴你(收集互聯網)

    跳槽3次才算弄明白的4個秘密 所有公司都不會告訴你(收集互聯網) 網上看到的,有點意思,個人雖然不完全認同,但也是當今社會真實寫照。。職場中不光光是要靠能力做事,兢兢業業努力工作卻只獲得一份溫飽的工資。越是老實人,幹的越多,拿得越少,升的越慢,這並不是個例了 。人民的名義中漢東的易學習難被提拔,職場中

    還沒有明白的DAC

    cnblogs 得到 寄存器 span color nbsp col channel 整數 1       adcx=DAC_GetDataOutputValue(DAC_Channel_1);//讀取前面設置DAC的值 2 LCD_Showx