在MainActivity
中,我有一个TextView
。它在onCreate()
中实例化。
我按下一个按钮,然后开始另一个叫startActivityForResult()
的活动。
然后我返回到MainActivity
并调用onActivityResult()
。在这种方法中,我想用新文本更新TextView,但是它为null,结果为NullPointerException
。
我想指出的是,这种错误并不总是发生,而是有时在大约2%的用户中出现。
onSaveInstanceState()
/ onRestoreInstanceState()
吗? p.s。 我已经读过,最好使用onResume()
或onRestart()
方法更新textview,因为TextView
(和其余的Views)可以通过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);
} }