我必须在android清单中声明一些东西吗?即使活动被销毁,我也试图在notes.java中保存文本输入。所以我使用了SharedPreferences。 “editText1”是notes.xml中的文本输入当我运行应用程序时,它会强制关闭这里的notes.java:
public class notes extends Activity {
public static final String PREFS_NAME = "MyPrefsFile";
private EditText mEditText;
@Override
protected void onCreate(Bundle state){
super.onCreate(state);
// Restore preferences
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
String savedText = settings.getString("text", "");
mEditText = (EditText) findViewById(R.id.editText1);
mEditText.setText(savedText);
}
@Override
protected void onStop(){
super.onStop();
// We need an Editor object to make preference changes.
// All objects are from android.context.Context
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("text", mEditText.getText().toString());
// Commit the edits!
editor.commit();
}
}
这是强制关闭时的Logcat:
03-17 16:54:42.302:E / AndroidRuntime(14558):致命异常:主要 03-17 16:54:42.302:E / AndroidRuntime(14558): java.lang.RuntimeException:无法启动活动 ComponentInfo {izzy.n / izzy.n.notes}:java.lang.NullPointerException 03-17 16:54:42.302:E / AndroidRuntime(14558):at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1821) 03-17 16:54:42.302:E / AndroidRuntime(14558):at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1842) 03-17 16:54:42.302:E / AndroidRuntime(14558):at android.app.ActivityThread.access $ 1500(ActivityThread.java:132)03-17 16:54:42.302:E / AndroidRuntime(14558):at android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1038) 03-17 16:54:42.302:E / AndroidRuntime(14558):at android.os.Handler.dispatchMessage(Handler.java:99)03-17 16:54:42.302:E / AndroidRuntime(14558):at android.os.Looper.loop(Looper.java:150)
答案 0 :(得分:1)
您需要在setContentView
之前致电findViewById
:
setContentView(R.layout.main);
mEditText = (EditText) findViewById(R.id.editText1);