-6

我有一个片段,我将其称为活动,完成任务后,将其处理并返回片段屏幕。在这种情况下,我需要从我试图使用 onActivityResult 处理它的活动中取回数据,但结果代码总是-1。

片段代码:

    //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
            }
        } 

然后

    //Next screen code after finishing task
Intent backIntent = new Intent();
backIntent.putExtra("dummy", "ok");
setResult(Constants.RESPONSE_CODE_UPDATE_PROFILE, backIntent);
Log.v("RLC U : ", "" + Constants.RESPONSE_CODE_UPDATE_PROFILE); //sends correct e.g. 334
finish();

我想知道为什么它没有返回实际结果代码,例如 334。

4

3 回答 3

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 仅帮助您识别您来自哪个活动。

你唯一需要做的就是投入意图。

关于活动 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);
        }
    }
于 2016-12-01T07:36:26.227 回答
0

将您的 onActivityResult 方法从您的片段移动到包含该片段的 Activity。它应该这样工作。

于 2016-12-01T07:17:32.650 回答
0

因为你Constants.RESPONSE_CODE_UPDATE_PROFILE是-1;

于 2016-12-01T07:13:29.370 回答