TextView,ListView为null,然后返回onActivityResult

时间:2019-02-24 21:16:14

标签: android nullpointerexception textview onactivityresult

MainActivity中,我有一个TextView。它在onCreate()中实例化。

我按下一个按钮,然后开始另一个叫startActivityForResult()的活动。

然后我返回到MainActivity并调用onActivityResult()。在这种方法中,我想用新文本更新TextView,但是它为null,结果为NullPointerException

我想指出的是,这种错误并不总是发生,而是有时在大约2%的用户中出现。

  1. 为什么会发生?
  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);
} }

0 个答案:

没有答案