onActivityResult重新调整结果代码始终为-1

时间:2016-12-01 07:09:15

标签: android android-fragments android-activity onactivityresult startactivityforresult

我有一个片段,我称之为活动,在完成任务后,将其处理掉&回到碎片屏幕。在这里,我需要从活动中获取数据,我正在尝试使用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。

3 个答案:

答案 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。它应该这样工作。