? ? ? ?在Android實(shí)際開(kāi)發(fā)中,如需從已啟動(dòng)的activity獲取返回結(jié)果,可使用與GeoQuiz應(yīng)用中類似的實(shí)現(xiàn)代碼。接下來(lái)南昌APP開(kāi)發(fā)公司專家就來(lái)為大家做個(gè)詳細(xì)介紹:
? ? ? ?具體的代碼調(diào)整就是:不調(diào)用Activity的startActivityForResult(...)方法,轉(zhuǎn)而調(diào)用Fragment.startActivityForResult(...)方法;不覆蓋Activity.onActivityResult(...)方法,轉(zhuǎn)而覆蓋Fragment.onActivityResult(...)方法。
? ? ? ?public class CrimeListFragment extends Fragment {
? ? ? ?private static final int REQUEST_CRIME = 1;
? ? ? ?...
? ? ? ?private class CrimeHolder extends RecyclerView.ViewHolder
? ? ? ?implements View.OnClickListener {
? ? ? ?...
? ? ? ?@Override
? ? ? ?public void onClick(View v) {
? ? ? ?Intent intent = CrimeActivity.newIntent(getActivity(), mCrime.getId());
? ? ? ?startActivityForResult(intent, REQUEST_CRIME);
? ? ? ?}
? ? ? ?}
? ? ? ?@Override
? ? ? ?public void onActivityResult(int requestCode, int resultCode, Intent data) {
? ? ? ?if (requestCode == REQUEST_CRIME) {
? ? ? ?// Handle result
? ? ? ?}
? ? ? ?}
? ? ? ?...
? ? ? ?}
? ? ? ?除將返回結(jié)果從托管activity傳遞給fragment的額外實(shí)現(xiàn)代碼之外,F(xiàn)ragment.startActivity-ForResult(Intent,int)方法類似于Activity的同名方法。
從fragment中返回結(jié)果的處理稍有不同。fragment能夠從activity中接收返回結(jié)果,但其自身無(wú)法持有返回結(jié)果。只有activity擁有返回結(jié)果。因此,盡管Fragment有自己的startActivity-ForResult(...)和onActivityResult(...)方法,但卻沒(méi)有setResult(...)方法。
? ? ? ?相反,我們應(yīng)讓托管activity返回結(jié)果值。具體代碼如下:
? ? ? ?public class CrimeFragment extends Fragment {
? ? ? ?...
? ? ? ?public void returnResult() {
? ? ? ?getActivity().setResult(Activity.RESULT_OK, null);
? ? ? ?}
? ? ? ?}
? ? ? ?以上就是百恒網(wǎng)絡(luò)今天教大家的通過(guò)fragment 獲取返回結(jié)果的操作方法,你學(xué)會(huì)了嗎?如果還有那些不明白的地方,可隨時(shí)來(lái)電和我們聯(lián)系,本公司專業(yè)從事南昌APP開(kāi)發(fā)、微信開(kāi)發(fā)、網(wǎng)站建設(shè)等服務(wù)具有十多年的資深經(jīng)驗(yàn),關(guān)于APP開(kāi)發(fā)方面的技術(shù)我們都能夠輕松為您解決。