在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开发方面的技术我们都能够轻松为您解决。