Как изменить текст другого поля деятельности - PullRequest
0 голосов
/ 10 февраля 2020

Я хочу изменить логин / пароль EditText со значениями логина / пароля для активности в реестре.

Проблема в том, что EditText не создается в активности в регистре, давая нулевую ссылку на нее (очевидно, поскольку действие отличается от текущего - регистр не может получить доступ к компонентам входа xml)

Процесс: com.guincho7.customer, PID: 14877 java .lang.NullPointerException: Попытка вызвать виртуальный метод 'void android .widget.TextView.setText (java .lang.CharSequence)' для пустой ссылки на объект

Иерархия действий:

Вход в систему - новое намерение (НЕ FINI SH) -> Регистрация - успешная регистрация -> Fini sh регистрация активности (назад к активности входа в систему, которая была на переднем плане)

Как я могу это сделать с наилучшей возможной реализацией?

1 Ответ

0 голосов
/ 10 февраля 2020

Вы должны использовать startActivityForResult вместо startActivity в вашем LoginActivity. Например, в вашем LoginActivity используйте это:

static final int REGISTER_REQUEST = 1; // The request code.
private void register() {
    Intent intent = new Intent(this, RegisterActivity.class);
    startActivityForResult(intent, REGISTER_REQUEST);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REGISTER_REQUEST) {
        if (resultCode == RESULT_OK) {
            String login = data.getStringExtra("login");
            loginEditText.setText(login);
            String pass = data.getStringExtra("pass");
            passEditText.setText(pass);
        }
    }
}

И в вашем RegisterActivity установите данные до конечного значения sh следующим образом:

Intent intent = new Intent();
intent.putExtra("login", loginEditText.getText().toString());
intent.putExtra("pass", passEditText.getText().toString());
setResult(RESULT_OK, intent);
finish();
...