本文轉(zhuǎn)載自:文/一個(gè)脫離高級(jí)趣味的人(簡(jiǎn)書(shū)作者),在此非常感謝
原文鏈接:http://www.itdecent.cn/p/701394ee3846
今天在項(xiàng)目中碰到一個(gè)需求,需要在Fragment中跳轉(zhuǎn)到一個(gè)新的Activity之后在Fragment獲取到新的這個(gè)Activity返回的數(shù)據(jù).
下面提供遇到問(wèn)題的解決辦法:
我們正常情況下會(huì)從一個(gè)Activity A 跳轉(zhuǎn)到另一個(gè)Activity B,然后在A 中獲取 B中返回的數(shù)據(jù),一般是在Activity中使用getActivity().startActivityForResult()方法跳轉(zhuǎn)到 B,然后在Activity.onActivityResult()方法中處理返回的數(shù)據(jù)。
但是有時(shí)候我們需要從一個(gè)Fragment中跳轉(zhuǎn)到一個(gè)新的Activity之后在這個(gè)Fragment中獲取到返回的數(shù)據(jù),這里如果我們還像前面在Activity中跳轉(zhuǎn)一樣使用getActivity().startActivityForResult()方法將無(wú)法獲取到相關(guān)的返回?cái)?shù)據(jù)。這里我們需要使用Fragment自身提供的一個(gè)方fragment.startActivityForResult()或者this.startActivityForResult()方法跳轉(zhuǎn)到一個(gè)新的Activity,然后在Fragment中調(diào)用fragment.onActivityResult()就可以處理返回的相關(guān)數(shù)據(jù)。如果以上都還無(wú)法獲取到需要的數(shù)據(jù),那么可能是這樣的問(wèn)題,在Fragment所在的Activity中的onActivityResult()方法中有沒(méi)有加上super.onActivityResult(requestCode, resultCode, data)這行代碼, 沒(méi)有的話(huà)趕緊加上,像下面這樣
@OverrideprotectedvoidonActivityResult(intrequestCode,intresultCode, Intent data){super.onActivityResult(requestCode, resultCode, data);//thisswitch(resultCode) {caseConst.RQC_INIT_PASSWORD:? ? ? ? ? ? ? ? listAdapter.notifyDataSetChanged();break;caseConst.RQC_CLOSE_PASSWORD:? ? ? ? ? ? (newLockPatternUtils(this.mContext)).clearLock();? ? ? ? ? ? listAdapter.notifyDataSetChanged();break;default:break;? ? }}
至此問(wèn)題得以解決 ......