android中bundle類的作用
bundle類用作攜帶資料,它類似於
map,用於存放
key-value
名值對形式的值。相對於
map,它提供了各種常用型別的
put***()/get***()
方法,如
:putstring()/getstring()
和putint()/getint()
,put***()
用於往bundle
物件放入資料,
get***()
方法用於從
bundle
物件裡獲取資料。
bundle
的內部實際上是使用了
hashmap
型別的變數來存放
put***()
方法放入的值:
public final class bundle implements parcelable, cloneable
public void putstring(string key, string value)
public string getstring(string key) }
在呼叫bundle
物件的get***()
方法時,方法內部會從該變數中獲取資料,然後對資料進行型別轉換,轉換成什麼型別由方法的
***決定,
get***()
方法會把轉換後的值返回。
使用bundle在activity間傳遞資料
從源activity 中傳遞資料
//資料寫入intent
intent openwelcomeactivityintent=new intent();
bundle mybundelforname=new bundle();
mybundelforname.putstring("key_name",inname.gettext().tostring());
mybundelforname.putstring("key_age",inage.gettext().tostring());
openwelcomeactivityintent.putextras(mybundelforname);
openwelcomeactivityintent.setclass(androidbundel.this, welcome.class);
startactivity(openwelcomeactivityintent);
目標activity 中獲取資料
//從intent 中獲取資料
bundle mybundelforgetname=this.getintent().getextras();
string name=mybundelforgetname.getstring("key_name");
mytextview_showname.settext("歡迎您進入:"+name);
使用bundle在activity間傳遞資料2
從源請求activity 中通過乙個intent 把乙個服務請求傳到目標activity 中
private intent tonextintent;//intent 成員宣告
tonextintent=new intent();//intent 定義
tonextintent.setclass(twoactivityme3.this, secondactivity3.class);
//設定開啟的下乙個activity
startactivityforresult(tonextintent, request_ask);
//開啟intent 時候,把請求碼同時傳遞
在源請求activity 中等待intent 返回應答結果,通過過載onactivityresult()方法
@override
protected void onactivityresult(int requestcode,int resultcode, intent data) else if(resultcode==result_ok)}}
? 第乙個引數是你開啟請求intent時的對應請求碼,可以自己定義。
? 第二個引數是目標activity返回的驗證結果碼
? 第三個引數是目標activity返回的intent
目標activity 中傳送請求結果**,連同源activity 請求的資料一同繫結到bundle
中通過intent 傳回源請求activity 中
log與ddms(檢視log等資訊)
@override
protected void onactivityresult(int requestcode,
int resultcode, intent data) else if(resultcode==result_ok)}}
目標activity 中傳送請求結果**,連同源activity 請求的資料一同繫結到bundle
中通過intent 傳回源請求activity 中
backintent=new intent();
stringbundle=new bundle();
stringbundle.putstring("myname", name);
backintent.putextras(stringbundle);
setresult(result_ok, backintent);//返回activity結果碼
finish();
Bundle傳遞引數
bundle是在android中十分有用的一種類,我們通常用它來進行引數的傳遞。理解bundle可以把它當作乙個map,所以它的本質是乙個key value鍵值對。其中key值為乙個標識引數的string值,value即為該string對應的引數。使用bundle傳遞引數會在intent messa...
把仿函式類設計成用於值傳遞
1 錯誤示例 將仿函式類的資料和 或多型移到另乙個類中,然後給你的仿函式乙個指向這個新類的指標。比如,你想建立 乙個包含很多資料的多型仿函式類。templateclass bpfc public unary function 2 正確示例 建立乙個包含指向實現類的指標的小而單態的類,然後把所有資料和...
使用EventBus代替Bundle傳遞引數。
註冊 eventbus.getdefault register this 反註冊 eventbus.getdefault unregister this post方法 eventbus.getdefault post obj 接收方法 如果使用onevent作為訂閱函式,那麼該事件在哪個執行緒發布出...