Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android onActivityResult返回结果代码始终为-1_Android_Android Fragments_Android Activity_Onactivityresult_Startactivityforresult - Fatal编程技术网

Android onActivityResult返回结果代码始终为-1

Android onActivityResult返回结果代码始终为-1,android,android-fragments,android-activity,onactivityresult,startactivityforresult,Android,Android Fragments,Android Activity,Onactivityresult,Startactivityforresult,我有一个片段,我从中调用活动,完成任务后,处理它并返回片段屏幕。在这种情况下,我需要从活动中获取数据,我正试图使用onActivityResult处理这些数据,但得到的结果代码总是-1 片段代码: //call to next screen, below code is written inside alert dialog Intent intentAddProfile = new Intent(getActivity(), UpdateMyProfilectivity.class)

我有一个片段,我从中调用活动,完成任务后,处理它并返回片段屏幕。在这种情况下,我需要从活动中获取数据,我正试图使用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
            }
        } 
然后


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

因为您的常量。响应\u代码\u更新\u配置文件为-1

将onActivityResult方法从片段移动到保存片段的活动。应该是这样的。

想象一下你有三个活动A、B和C。现在从活动A调用startActivityForResult for B和C

Intent intentAddProfile = new Intent(getActivity(), B.class);
startActivityForResult(intentAddProfile, 2);

关于活动B

setResult(requestCode, intent); // requestCode = 2;
Intent backIntent = new Intent();
backIntent.putExtra("value", 334);
setResult(2, backIntent);
活动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

setResult(requestCode, intent); // requestCode = 2;
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);
        }
    }

抱歉耽误了你的时间。我的代码错误,但现在已修复。看起来博拉德先生在下面给出了一个很好的答案,请回复他。