? ? ? ?在Android實際開發中,如需從已啟動的activity獲取返回結果,可使用與GeoQuiz應用中類似的實現代碼。接下來南昌APP開發公司專家就來為大家做個詳細介紹:
? ? ? ?具體的代碼調整就是:不調用Activity的startActivityForResult(...)方法,轉而調用Fragment.startActivityForResult(...)方法;不覆蓋Activity.onActivityResult(...)方法,轉而覆蓋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
? ? ? ?}
? ? ? ?}
? ? ? ?...
? ? ? ?}
? ? ? ?除將返回結果從托管activity傳遞給fragment的額外實現代碼之外,Fragment.startActivity-ForResult(Intent,int)方法類似于Activity的同名方法。
從fragment中返回結果的處理稍有不同。fragment能夠從activity中接收返回結果,但其自身無法持有返回結果。只有activity擁有返回結果。因此,盡管Fragment有自己的startActivity-ForResult(...)和onActivityResult(...)方法,但卻沒有setResult(...)方法。
? ? ? ?相反,我們應讓托管activity返回結果值。具體代碼如下:
? ? ? ?public class CrimeFragment extends Fragment {
? ? ? ?...
? ? ? ?public void returnResult() {
? ? ? ?getActivity().setResult(Activity.RESULT_OK, null);
? ? ? ?}
? ? ? ?}
? ? ? ?以上就是百恒網絡今天教大家的通過fragment 獲取返回結果的操作方法,你學會了嗎?如果還有那些不明白的地方,可隨時來電和我們聯系,本公司專業從事南昌APP開發、微信開發、網站建設等服務具有十多年的資深經驗,關于APP開發方面的技術我們都能夠輕松為您解決。