-6

我有一个片段,我从中调用活动并完成任务后,将其配置回&回到片段屏幕。在这里,我需要从活动中获取数据,我尝试使用onActivityResult处理它,但是得到的结果代码始终为-1。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.

+0

对不起,你的时间。在代码中排除错误,但现在修复它。 – VVB

+0

看起来Borad先生在下面给出了一个很好的答案,请回复他。 – halfer

回答

0

因为你的Constants.RESPONSE_CODE_UPDATE_PROFILE是-1;

+0

已经提到,它的334 – VVB

0

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

1

觉得像你这样从活动主叫startActivityForResult为B和C.有三个活动A,B和C现在

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; 

最后对活性产生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); 

和活动的一个

public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
     if (requestCode == 2) { 
      final int value= intent.getIntExtra("value", 0); 
     } 
    }