Передать данные из действия A в действие B
Вот что я хочу сделать: у меня есть тест, где пользователь должен ответить на три вопроса. После трех вопросов появляется экран результатов, на котором пользователь видит ответ.
Поэтому я хочу получить ответ из действия A, действия B и действия C на результат деятельности. Единственная проблема заключается в том, что каждый пример или учебник в Интернете переходит от действия А к занятию В, а затем возвращается к занятию А. Но я не хочу возвращаться, я хочу идти вперед. Это вообще возможно?
В моем вопросе один вид деятельности (вид деятельности А), у меня есть этот код. Данные о намерениях отправляются на второй вопрос вместо экрана результатов, как упомянуто выше, просто для проверки, работает ли onActivityResult (). Код ниже находится внутри оператора if / else, чтобы проверить правильность ответа.
QuestionOneActivity
Intent i = new Intent(QuestionOne.this, QuestionTwo.class);
i.putExtra("result", buttonText);
setResult(RESULT_OK, i);
startActivityForResult(i, CONTROLE_CODE);
Log.e("Send", "Send");
buttonText
переменная - это ответ, который выбирает пользователь. Я уже проверил, является ли эта переменная нулевой, и это не так. CONTROLE_CODE
переменная установлена в 0;
И в моем QuestionTwoActivity (действие B) есть этот код для получения данных от
QuestionTwoActivity:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if ((resultCode == RESULT_OK) && (requestCode == CONTROLE_CODE)) {
retrieveData = data.getStringExtra("result");
Log.e("Data", "Data: " + retrieveData);
}
Log.e("The answer is:", "The answer is" + retrieveData);
}
retrieveData
является строковой переменной и объявлен в верхней части моей деятельности.
Log.e("Send", "Send");
из QuestionOneActivity видно в моем LogCat. Но Log.e("Data", "Data: " + retrieveData);
или же Log.e("The answer is:", "The answer is" + retrieveData);
из QuestionTwoActivity не отображается в моем LogCat. Так что это не вызывается.
Может быть, это дублирующий вопрос, но я не нашел ответа на мою проблему. Итак, как правильно отправить данные из действия A, действия B и действия C на экран результатов (действие D)?
Заранее спасибо.
2 ответа
В вопросе 1
Intent i = new Intent(QuestionOne.this, QuestionTwo.class);
i.putExtra("answer1", buttonText);
startActivity(i);
в созданной функции вопроса 2 получить предыдущий ответ
String Answer1 = getIntent().getStringExtra("answer1");
Intent i = new Intent(QuestionTwo.this, QuestionThree.class);
i.putExtra("answer1", Answer1 );
i.putExtra("answer2", buttonText);
startActivity(i);
и так далее для вопроса три, а затем результат
Деятельность QuestionOne
:
Intent i = new Intent(QuestionOne.this, QuestionTwo.class);
i.putExtra("result", buttonText);
startActivity(i);
Деятельность QuestionTwo
:
Intent intent = getIntent();
String text = intent.getStringExtra("result");