2011-12-05 33 views
0

节能实例状态我写的代码如下保存的TextView的状态:问题与Android的

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 constant.But在启动应用程序时,它将投掷零线异常排队

text=savedInstanceState.getString(TEXTVIEW_STATE_KEY); 

任何人都有理念? plz帮助。

+1

重新检测线。因为在if(savedInstanceState!= null)内部,它不能为空。在tv.setText(文本)中,电视可能为空 –

+0

我可以看到日志... –

+0

@ShailendraRajawat Thanks.But在电视我设置它findViewById()函数,它不为空。 –

回答

1

它是因为您在保存TextView的保存时在您的Bundle中存储NULL。在存储状态之前,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()); 
    } 
+0

感谢buddy.but我已经在里面设置了文本oncreate.there是一个逻辑,即时通讯确保textview中有文字值。没有问题,只是它不工作,并显示NP在行,因为我告诉我的问题 –

+0

一个问题可以是这个super.onSaveInstanceState(b);你最后调用它应该在方法的顶部。 –

0

很老的问题,但答案很简单...有你的,如果条件结束分号(;)。