-6

私はアクティビティを呼び出すフラグメントを持っており、タスクを完了した後、それを廃棄して&がフラグメント画面に戻ります。この中で、私はonActivityResultを使ってそれを処理しようとしているが、resultcodeを常に-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); 

次は、その後、私はそれが例えばある実際の結果コードを返していない理由を知りたい

//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(); 

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

。私のコードでエラーが発生しましたが、今修正しました。 – VVB

+0

ボラード氏が以下に良い答えをくれたように見えるので、彼に返信してください。 – halfer

答えて

0

Constants.RESPONSE_CODE_UPDATE_PROFILEが-1であるため、

+0

すでに述べたように、その334 – VVB

0

フラグメントからonActivityResultメソッドをフラグメントを保持するアクティビティに移動します。それはそのように動作するはずです。アクティビティBのための呼び出しstartActivityForResultとC.から3つのアクティビティA、BおよびCの今持っているよう

1

は考えて

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

と活動Bで

Intent intentAddProfile = new Intent(getActivity(), C.class); 
startActivityForResult(intentAddProfile, 3); 

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 onllyあなたがから来ている活動のことを識別するのに役立ちます。

あなたがしなければならないのは、意図していることだけです。

活動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); 
     } 
    } 
関連する問題