resultCode имеет значение -1 после нажатия кнопки и finish (), но 0 после нажатия кнопки, даже с тем же кодом в соответствующих функциях - PullRequest
0 голосов
/ 26 июня 2019

У меня есть RecyclerView с его Adapter.class в отдельном файле, но onClickListener в адаптере запускает вторую активность просто отлично с startActivityForResult. Когда у меня есть пользовательский ввод, я хочу, чтобы приложение отправляло данные обратно в первое действие, которое работает только тогда, когда пользователь использует предоставленную мной кнопку, но не когда он использует кнопку, даже когда он выполняет тот же код в соответствующих функциях.

Я скопировал точно такой же код с кнопки в onBackPressed, onPause и onDestroy, но при Destroy запускается слишком поздно, а два других приводят к тому, что resultCode равен 0 и данные в NULL равны нулю. Я изменил setResult и его аргументы ко всем возможным вариантам, которые я нашел (RESULT_OK + Intent, Activity.RESULT_OK + Intent и просто RESULT_OK).

back = new Intent (this, MainActivity.class);

btnBack.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                back.putExtra("ANSWER", answer.getText().toString());
                back.putExtra("QUESTION_ID", questionId);
                setResult(RESULT_OK, back);
                finish();
            }
         });
@Override
     public void onBackPressed() {
        super.onBackPressed();
        back.putExtra("ANSWER", answer.getText().toString());
        back.putExtra("QUESTION_ID", questionId);
        setResult(RESULT_OK, back);
     }
@Override
    protected void onPause() {
        super.onPause();
        back.putExtra("ANSWER", answer.getText().toString());
        back.putExtra("QUESTION_ID", questionId);
        setResult(RESULT_OK, back);
    }

если я использую кнопку, она передает данные и устанавливает значение resultCode равным -1, но когда я не использую кнопку, а кнопка backCode = 0 и данные в ActivityResult равны нулю. Я не знаю, в чем разница

1 Ответ

0 голосов
/ 26 июня 2019

Попробуйте установить результат до onBackPressed вызова суперкласса:

     @Override
     public void onBackPressed() {
        back.putExtra("ANSWER", answer.getText().toString());
        back.putExtra("QUESTION_ID", questionId);
        setResult(RESULT_OK, back);
        super.onBackPressed();
     }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...