2011-12-05 37 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

很老的問題,但答案很簡單...有你的,如果條件結束分號(;)。