我编写了如下代码来保存textview的状态:
public void onSaveInstanceState(Bundle b){
System.out.println("save");
TextView tv1=(TextView)findViewById(R.id.text1);
b.putString(TEXTVIEW_STATE_KEY, tv1.getText().toString());
super.onSaveInstanceState(b);
}
然后我在onCreate
中检索如下内容if(savedInstanceState!=null && savedInstanceState.containsKey(TEXTVIEW_STATE_KEY));
{
System.out.println("hello");
text=savedInstanceState.getString(TEXTVIEW_STATE_KEY);
tv.setText(text);
}
TEXTVIEW_STATE_KEY是一个String常量。但是在启动应用程序时它会在行中抛出nullpointer异常
text=savedInstanceState.getString(TEXTVIEW_STATE_KEY);
任何有想法的人?请帮助。
答案 0 :(得分:1)
这是因为你在Bundle中存储NULL,同时保存了TextView的保存。在存储状态之前,TextView应该有一些值。像这样,
public void onSaveInstanceState(Bundle b){
super.onSaveInstanceState(b);
System.out.println("save");
TextView tv1=(TextView)findViewById(R.id.text1);
tv1.setText("saving the value");
b.putString(TEXTVIEW_STATE_KEY, tv1.getText().toString());
}
答案 1 :(得分:0)
很老的问题,但答案非常简单......在if条件的末尾有一个分号(;
)。