本文轉(zhuǎn)載自:文/一個脫離高級趣味的人(簡書作者)煎殷,在此非常感謝
原文鏈接:http://www.reibang.com/p/701394ee3846
今天在項目中碰到一個需求而晒,需要在Fragment中跳轉(zhuǎn)到一個新的Activity之后在Fragment獲取到新的這個Activity返回的數(shù)據(jù).
下面提供遇到問題的解決辦法:
我們正常情況下會從一個Activity A 跳轉(zhuǎn)到另一個Activity B过牙,然后在A 中獲取 B中返回的數(shù)據(jù)熊杨,一般是在Activity中使用getActivity().startActivityForResult()方法跳轉(zhuǎn)到 B惕鼓,然后在Activity.onActivityResult()方法中處理返回的數(shù)據(jù)。
但是有時候我們需要從一個Fragment中跳轉(zhuǎn)到一個新的Activity之后在這個Fragment中獲取到返回的數(shù)據(jù)喻杈,這里如果我們還像前面在Activity中跳轉(zhuǎn)一樣使用getActivity().startActivityForResult()方法將無法獲取到相關(guān)的返回數(shù)據(jù)扫俺。這里我們需要使用Fragment自身提供的一個方fragment.startActivityForResult()或者this.startActivityForResult()方法跳轉(zhuǎn)到一個新的Activity苍苞,然后在Fragment中調(diào)用fragment.onActivityResult()就可以處理返回的相關(guān)數(shù)據(jù)。如果以上都還無法獲取到需要的數(shù)據(jù)狼纬,那么可能是這樣的問題羹呵,在Fragment所在的Activity中的onActivityResult()方法中有沒有加上super.onActivityResult(requestCode, resultCode, data)這行代碼, 沒有的話趕緊加上疗琉,像下面這樣
@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;? ? }}
至此問題得以解決 ......