我有一个片段,我称之为活动,在完成任务后,将其处理掉&回到碎片屏幕。在这里,我需要从活动中获取数据,我正在尝试使用onActivityResult处理它,但结果代码始终为-1。
片段代码:
componentWillReceiveProps(nextProps) {
if (condition) {
this.target.destroy(); // this remove even the DOM node
this.state.content = `<div id="target" data-updated="${Date.now()}">ciao!</div>`;
}
}
接下来是
//call to next screen, below code is written inside alert dialog
Intent intentAddProfile = new Intent(getActivity(), UpdateMyProfilectivity.class);
startActivityForResult(intentAddProfile, Constants.REQUEST_CODE_UPDATE_PROFILE);
然后
//onactivityresult handling, inside onactivityresult() method
if (requestCode == Constants.REQUEST_CODE_UPDATE_PROFILE) {
if (resultCode == Constants.RESPONSE_CODE_UPDATE_PROFILE) {
Log.v("Result Code :", "" + resultCode); //getting always -1
}
}
我想知道为什么它没有返回实际的结果代码,例如334。
答案 0 :(得分:1)
想想你有三个活动A,B和C.现在来自活动A为B和C调用startActivityForResult。
Intent intentAddProfile = new Intent(getActivity(), B.class);
startActivityForResult(intentAddProfile, 2);
并且
Intent intentAddProfile = new Intent(getActivity(), C.class);
startActivityForResult(intentAddProfile, 3);
关于活动B
setResult(requestCode, intent); // requestCode = 2;
活动C
setResult(requestCode, intent); // requestCode = 3;
最后关于活动A onactivityresult()
if (requestCode == 2) {
// comming back from activity B.
}
else if (requestCode == 3)
{
// comming back from activity C.
}
requestCode onlly可帮助您确定您来自哪个活动。
你唯一需要做的就是放意图。
关于活动B
Intent backIntent = new Intent();
backIntent.putExtra("value", 334);
setResult(2, backIntent);
活动A
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == 2) {
final int value= intent.getIntExtra("value", 0);
}
}
答案 1 :(得分:0)
因为Constants.RESPONSE_CODE_UPDATE_PROFILE
是-1;
答案 2 :(得分:0)
将onActivityResult方法从片段移动到包含片段的Activity。它应该这样工作。