と一致していません。 REQUEST_CODE_SELECTED_OPTION
がQuestionActivity
終了後1アンドロイドsetResultは、私は2つのアクティビティが含まれクイズアプリに取り組んでいますonActivityResult
に定数セットである
Intent questionIntent = new Intent(QuizActivity.this, QuestionActivity.class);
questionIntent.putExtra("currentQuestion", currentQuestion);
startActivityForResult(questionIntent, REQUEST_CODE_SELECTED_OPTION);
場合、それは(選択されたオプションのインデックスを返すべきである:これと同様QuizActivity
Iにおいて、QuestionActivity
を開くためにstartActivityForResult(Intent, int)
方法を使用しましたそれは、複数の選択肢の質問だと仮定した場合)ので、私はonPause()
コールバックオーバーライド:
@Override
public void onPause() {
super.onPause();
Intent returnIntent = new Intent(QuestionActivity.this, QuizActivity.class);
if (curQuestion.selected()) {
returnIntent.putExtra("Result Code", RESULT_OK);
setResult(Activity.RESULT_OK, returnIntent);
Log.d("QuestionActivity", "Returned with " + Activity.RESULT_OK);
} else {
returnIntent.putExtra("Result Code", RESULT_CANCELED);
setResult(Activity.RESULT_CANCELED, returnIntent);
Log.d("QuestionActivity", "Returned with " + Activity.RESULT_CANCELED);
}
}
私も私の0でonActivityResult(int, int, Intent)
コールバックを実装しているが:私はアプリを実行したときに
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.d("QuizActivity", "Received result code: " + resultCode);
Log.d("QuizActivity", "Result code from intent: " + data.getIntExtra("Result Code", 100));
if (requestCode == REQUEST_CODE_SELECTED_OPTION) {
if(resultCode == Activity.RESULT_OK){
Log.d("QuizActivity", "Got RESULT_OK");
}
if (resultCode == Activity.RESULT_CANCELED) {
// do nothing
}
}
}
はしかし、私はQuestionActivity
に結果コードが正しく-1に設定されていることがわかりログから、バックヒット、QuestionActivity
に入ったオプションを選択:
D/QuestionActivity: Returned with -1
D/QuizActivity: Received result code: 0
しかし、onActivityResult(int, int, Intent)
メソッドでは結果コードは0です。また、私はまた、int
を返信しようとしましたが、QuizActivity
の受信意図はnull
です。私は本当に混乱しています。私は方法を間違って使用していますか?
あなたのかわりにonBackPressedのonPause()で実行する必要があり、なぜsetResult() – arjun
を呼び出す前に –
あなたから 'startActivityForResult'を呼び出していることを確認しテント内のデータを設定していません? 'Fragment'からではなく、アクティビティ自体です。フラグメントから' startActivityForResult 'を実行している場合、' onActivityResult 'がフラグメントのために呼び出されます。詳細については、[this post](http://stackoverflow.com/questions/10564474/wrong-requestcode-in-onactivityresult)を参照してください。 – azizbekian