TextView, ListView имеет значение null, затем возвращается в onActivityResult - PullRequest
0 голосов
/ 25 февраля 2019

В MainActivity у меня есть TextView.Он создается в onCreate().

Я нажимаю кнопку и начинаю другое действие, вызывая startActivityForResult().

Затем я возвращаюсь к MainActivity и onActivityResult() вызывается.В этом методе я хочу обновить TextView новым текстом, но он имеет значение null, в результате чего NullPointerException.

Я хотел бы отметить, что эта ошибка не всегда возникает, но иногда и где-то около 2%мои пользователи.

  1. Почему это может произойти?
  2. Должен ли я использовать onSaveInstanceState() / onRestoreInstanceState()?

ps Я прочиталЛучше обновить текстовое представление в методе onResume() или onRestart(), поскольку TextView (и остальные представления) восстанавливают свое значение в методе onResume(), но этот метод следует после onActivityResult(), поэтому TextView может стать нулевым.

public class MyActivity extends Activity {

TextView tv;
Button btn;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

   setContentView(R.layout.main);
   tv = (TextView) findViewById(R.id.myTextVIew);
   tv.setText("Text1");

} // end onCreate


protected void onActivityResult(int requestCode, int resultCode, Intent resultData) {
    if (resultCode == RESULT_OK) { 
        tv.setText("Text2");
    }
}    


public void onClickBtn(View v)
{
    Intent i = new Intent(MyActivity.this, SecondActivity.class); 
    startActivityForResult(i, 0);
} }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...