今天在項(xiàng)目中碰到一個(gè)需求,需要在Fragment中跳轉(zhuǎn)到一個(gè)新的Activity之后在Fragment獲取到新的這個(gè)Activity返回的數(shù)據(jù)妆偏,今天一直都無(wú)法獲取返回的數(shù)據(jù),在網(wǎng)上查了很久的資料后發(fā)現(xiàn)原來(lái)是這個(gè)項(xiàng)目的上一個(gè)逗比Coder少寫了一行代碼榕堰,真想分分鐘拍死TA ( ▼-▼ )
下面提供遇到問(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ù)葱椭,那么可能就會(huì)像我所遇見(jiàn)的問(wèn)題一樣捂寿,某逗比小伙伴在Fragment所在的Activity中的onActivityResult()
方法中有沒(méi)有加上super.onActivityResult(requestCode, resultCode, data)
這行代碼, 沒(méi)有的話趕緊加上孵运,像下面這樣
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data); //this
switch (resultCode) {
case Const.RQC_INIT_PASSWORD:
listAdapter.notifyDataSetChanged();
break;
case Const.RQC_CLOSE_PASSWORD:
(new LockPatternUtils(this.mContext)).clearLock();
listAdapter.notifyDataSetChanged();
break;
default:
break;
}
}
至此問(wèn)題得以解決 ......
就醬