在共享首选项android中获取空指针异常

时间:2011-09-16 04:00:09

标签: android nullpointerexception sharedpreferences

我的代码是这样的

//保存表单数据

private final OnClickListener mFinishListener = new OnClickListener() {
        public void onClick(View v) {

        SharedPreferences.Editor editor = getPreferences(0).edit();

        editor.putString("txtName",mName.getText().toString());

        servState = 1;
        editor.putInt("AppState", servState);
        editor.commit();

        }

//检索表单数据

protected void onResume() {
        super.onResume();

        SharedPreferences prefs = getPreferences(0);
        int restoreServState = prefs.getInt("AppState", 0);


        if(restoreServState == 0){
            setContentView(R.layout.main);
            Button button = (Button)findViewById(R.id.btnFinish);
            button.setOnClickListener(mFinishListener);
        }
        else {

            setContentView(R.layout.pwd);
            int selectionStart = prefs.getInt("selection-start", -1);
            int selectionEnd = prefs.getInt("selection-end", -1);
            if (selectionStart != -1 && selectionEnd != -1) {
                //mSaved.setSelection(selectionStart, selectionEnd);
            }
        }

    }

我在上面的代码中保存OnClick事件中的数据时得到NullPointerException。我遇到的确切问题是

    editor.putString("txtName",mName.getText().toString());

请告诉我这里有什么问题?我是否需要更改清单文件中的任何内容才能使用共享首选项?

1 个答案:

答案 0 :(得分:0)

您可能有两个问题是收到此错误

实际上,当Activity启动时,首先调用 onCreate()

在创建活动后调用

onResume(),因此您的控件可能无法获取资源

1)so had setContentView(R.layout.main) in onCreate?
2)had you initialize EditText mName=(EditText) findViewById(R.id.label);?

检查这些东西,可能有效