我的代码是这样的
//保存表单数据
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());
请告诉我这里有什么问题?我是否需要更改清单文件中的任何内容才能使用共享首选项?
答案 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);?
检查这些东西,可能有效