Проблема с запуском ActivityForResult - PullRequest
0 голосов
/ 11 сентября 2011

У меня есть одно действие, которое запускает другое действие, имеющее EditText-представление.Когда пользователь нажимает кнопку «Назад», я хочу, чтобы строка в этом текстовом представлении была возвращена, но я не могу заставить ее работать.Я попытался реализовать кнопку (цель теста) и запустить мой код, и тогда он работает.

В действии, которое запускает другое:

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (REQUEST_CODE_COMMENT == requestCode) {
            if (RESULT_OK == resultCode) {
                Toast.makeText(this, data.getDataString(), Toast.LENGTH_LONG).show();
            }
        }
    }

Упражнение с представлением редактирования текста (я хочу, чтобы это работало):

@Override
public void onBackPressed() {
    super.onBackPressed();
    Intent intent = new Intent();
    intent.setData(Uri.parse("hfldskajfkj" + commentEditText.getText().toString()));
    setResult(RESULT_OK, intent);   
}

НоКод результата равен 0 (RESULT_CANCELLED), когда я его регистрирую.

Ответы [ 3 ]

3 голосов
/ 11 сентября 2011
public void onBackPressed() {
        finish();
}

Это реализация по умолчанию onBackPressed() (также упоминаемая в документации ) . Это означает, что ваша деятельность завершается (с кодом по умолчанию RESULT_CANCELLED) до того, как будет вызван ваш другой код. Удаление super.onBackPressed() и добавление finish() внизу должно исправить это.

2 голосов
/ 11 сентября 2011

Проблема заключается в следующем: API говорит:

public void onBackPressed () Так как: Уровень API 5

Вызывается, когда активность обнаружила нажатие пользователем клавиши возврата.,Реализация по умолчанию просто завершает текущее действие, но вы можете переопределить это, чтобы делать все, что вы хотите.

И когда вы вызываете super.onBackPressed (), все ссылки на конкретное действие очищаются.Следовательно, конкретные данные не добавляются.Попробуйте тот же код, вставленный в OnClickListener кнопки.Это должно работать

0 голосов
/ 12 сентября 2011

Где-то в рекомендациях по пользовательскому интерфейсу Android сказано, что у вас не должно быть явных кнопок «сохранить». В этом случае ответ прост: не беспокойтесь о проверке, если код результата RESULT_OK, всегда используйте последнее значение виджета EditText независимо от того.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...