前言:
想跳轉(zhuǎn)到另外一個(gè)Activity 伯铣,finish后有結(jié)果返回崎坊,之前一直都沒(méi)有做這個(gè)方面的詳細(xì)解析,很容易混淆參數(shù)值壁公,每次用到了都百度才想起感论,今天就把這節(jié)補(bǔ)全
<br />
相關(guān)函數(shù):
startActivityForResult(Intent intent, Int requestCode)
setResut(int resultCode, Intent intent)
onActivityResult(int requestCode, int resultCode, Intent intent)
<br />
留意上面的方法參數(shù),就可以對(duì)應(yīng)出兩個(gè)參數(shù)值requestCode贮尖,resultCode笛粘,一個(gè)是要求值趁怔,一個(gè)是結(jié)果值湿硝,記住這兩個(gè)就好辦了,為了邏輯清晰润努,我這里就不傳參數(shù)了(雖然這個(gè)主要作用是用于傳參數(shù)的判斷)
<br />
1.先是A中startActivityForResult(Intent intent, Int requestCode)跳轉(zhuǎn)到B
Intent intent=new Intent();intent.setClass(A.this, B.class);
startActivityForResult(intent, 0);//requestCode必須大于等于0
2.B中重寫(xiě)setResut(int resultCode, Intent intent)方法 返回B處理后的數(shù)據(jù)关斜。
setResult(OK, intent); finish();//此處一定要調(diào)用finish()方法
3.A中重寫(xiě)onActivityResult(int requestCode, int resultCode, Intent intent)方法,用來(lái)接收B回傳的數(shù)據(jù)铺浇。
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (resultCode) { //resultCode為B回傳的標(biāo)記痢畜,我在B中回傳的是RESULT_OK case OK:
if(requestCode == 0)//requestCode為判斷A中哪里來(lái)(可能A中有兩個(gè)入口調(diào)用startActivityForResult挽牢,這里就用到了)
{
//data獲取回傳的數(shù)據(jù)
}else{
//data獲取回傳的數(shù)據(jù)
}
break;default: break; }}