Передать данные из действия 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");
Другие вопросы по тегам