Android中的onActivityResult和setResult方法的使用
$*********************************************************************************************$
博主推薦:
風(fēng)蕭兮兮易水寒,“天真”一去兮不復(fù)還。如何找到天真的那份快樂(lè)。小編傾力推薦app:?天真無(wú)諧
下載方式:豌豆莢,應(yīng)用寶,360手機(jī)助手,百度手機(jī)助手,安卓,91市場(chǎng)搜索:天真無(wú)諧
關(guān)注我們:查看詳情
$*********************************************************************************************$
如果你想在Activity中得到新打開(kāi)Activity關(guān)閉后返回的數(shù)據(jù),你需要使用系統(tǒng)提供的startActivityForResult(Intent intent,int requestCode)方法打開(kāi)新的Activity,新的Activity關(guān)閉后會(huì)向前面的Activity傳回?cái)?shù)據(jù),為了得到傳回的數(shù)據(jù),你必須在前面的Activity中重寫(xiě)onActivityResult(int requestCode, int resultCode,Intent data)方法:
public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {Button button =(Button)this.findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener(){ //點(diǎn)擊該按鈕會(huì)打開(kāi)一個(gè)新的Activitypublicvoid onClick(View v) {//第二個(gè)參數(shù)為請(qǐng)求碼,可以根據(jù)業(yè)務(wù)需求自己編號(hào)startActivityForResult(new Intent(MainActivity.this, NewActivity.class), 1);}});}//第一個(gè)參數(shù)為請(qǐng)求碼,即調(diào)用startActivityForResult()傳遞過(guò)去的值//第二個(gè)參數(shù)為結(jié)果碼,結(jié)果碼用于標(biāo)識(shí)返回?cái)?shù)據(jù)來(lái)自哪個(gè)新Activity@Override protected voidonActivityResult(int requestCode, int resultCode, Intent data) {String result =data.getExtras().getString(“result”));//得到新Activity關(guān)閉后返回的數(shù)據(jù)} }? ??
當(dāng)新Activity關(guān)閉后,新Activity返回的數(shù)據(jù)通過(guò)Intent進(jìn)行傳遞,android平臺(tái)會(huì)調(diào)用前面Activity的onActivityResult()方法,把存放了返回?cái)?shù)據(jù)的Intent作為第三個(gè)輸入?yún)?shù)傳入,在onActivityResult()方法中使用第三個(gè)輸入?yún)?shù)可以取出新Activity返回的數(shù)據(jù)。
請(qǐng)求碼的作用:
使用startActivityForResult(Intent intent . intrequestcode)方法打開(kāi)新的activity,我們需要為該方法傳遞一個(gè)請(qǐng)求碼。請(qǐng)求碼的值是根據(jù)業(yè)務(wù)需要由自已設(shè)定,
用于標(biāo)識(shí)請(qǐng)求來(lái)源。例如:一個(gè)Activity有兩個(gè)按鈕,點(diǎn)擊這兩個(gè)按鈕都會(huì)打開(kāi)同一個(gè)Activity,不管是那個(gè)按鈕打開(kāi)新Activity,當(dāng)這個(gè)新Activity關(guān)閉后,系統(tǒng)都會(huì)調(diào)用前面Activity的onActivityResult(int requestCode, int resultCode, Intent data)方法。在onActivityResult()方法如果需要知道新Activity是由那個(gè)按鈕打開(kāi)的,并且要做出相應(yīng)的業(yè)務(wù)處理,這時(shí)可以這樣做:
@Override public void onCreate(Bundle savedInstanceState) {....button1.setOnClickListener(newView.OnClickListener(){public void onClick(View v) {startActivityForResult (newIntent(MainActivity.this, NewActivity.class), 1);}});button2.setOnClickListener(newView.OnClickListener(){public void onClick(View v) {startActivityForResult (newIntent(MainActivity.this, NewActivity.class), 2);}}); @Override protected voidonActivityResult(int requestCode, int resultCode, Intent data) {switch(requestCode){case 1://來(lái)自按鈕1的請(qǐng)求,作相應(yīng)業(yè)務(wù)處理case 2://來(lái)自按鈕2的請(qǐng)求,作相應(yīng)業(yè)務(wù)處理}}結(jié)果碼的作用:用于標(biāo)示返回結(jié)果的來(lái)源。
在一個(gè)Activity中,可能會(huì)使用startActivityForResult()方法打開(kāi)多個(gè)不同的Activity處理不同的業(yè)務(wù),當(dāng)這些新Activity關(guān)閉后,系統(tǒng)都會(huì)調(diào)用前面Activity的onActivityResult(int requestCode, int resultCode, Intentdata)方法。為了知道返回的數(shù)據(jù)來(lái)自于哪個(gè)新Activity,在onActivityResult()方法中可以這樣做(ResultActivity和NewActivity為要打開(kāi)的新Activity):
需要返回?cái)?shù)據(jù)或結(jié)果的,則使用startActivityForResult (Intent intent, intrequestCode),requestCode的值是自定義的,用于識(shí)別跳轉(zhuǎn)的目標(biāo)Activity。
跳轉(zhuǎn)的目標(biāo)Activity所要做的就是返回?cái)?shù)據(jù)/結(jié)果,setResult(int resultCode)只返回結(jié)果不帶數(shù)據(jù),或者setResult(int resultCode, Intent data)兩者都返回!而接收返回的數(shù)據(jù)/結(jié)果的處理函數(shù)是onActivityResult(intrequestCode, int resultCode, Intent data),這里的requestCode就是startActivityForResult的requestCode,resultCode就是setResult里面的resultCode,返回的數(shù)據(jù)在data里面
轉(zhuǎn)載于:https://www.cnblogs.com/roccheung/p/5797455.html
總結(jié)
以上是生活随笔為你收集整理的Android中的onActivityResult和setResult方法的使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 不可深交者
- 下一篇: Android核心分析之二十七Andro