В MainActivity
у меня есть TextView
.Он создается в onCreate()
.
Я нажимаю кнопку и начинаю другое действие, вызывая startActivityForResult()
.
Затем я возвращаюсь к MainActivity
и onActivityResult()
вызывается.В этом методе я хочу обновить TextView новым текстом, но он имеет значение null, в результате чего NullPointerException
.
Я хотел бы отметить, что эта ошибка не всегда возникает, но иногда и где-то около 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);
} }