在android中保存实例状态的问题

时间:2011-12-05 11:47:44

标签: android view state

我编写了如下代码来保存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);

任何有想法的人?请帮助。

2 个答案:

答案 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条件的末尾有一个分号(;)。