强制关闭notes.java(sharedpreferences)

时间:2012-03-17 21:00:31

标签: java android sharedpreferences

我必须在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)

1 个答案:

答案 0 :(得分:1)

您需要在setContentView之前致电findViewById

setContentView(R.layout.main);
mEditText = (EditText) findViewById(R.id.editText1);