2010-12-23 25 views
7

我在Android的編程初學者,不幸的是我有一個問題:)保存喜好

我有方法writeSettings()在我的比賽中,我試圖挽救一些變量來使用它時想通過readSettings()方法加載上一場比賽。有參數如第一(第二)PlayerName,第一(第二)PlayerScore等等。我試圖使用SharedPreferences來保存它們,但是在啓動程序時我會看到「強制關閉」對話框。

SharedPreferences preferences = getPreferences(MODE_PRIVATE); //Global variable 

    private void writeSettings() { 
       SharedPreferences.Editor editor = preferences.edit(); 
       editor.putInt("timeSave", time); 
       editor.putString("firstPlayerNameSave", firstPlayerNameTextView.getText().toString()); 
       editor.putString("secondPlayerNameSave", secondPlayerNameTextView.getText().toString()); 
       editor.putString("firstPlayerScoreSave", firstPlayerScoreTextView.getText().toString()); 
       editor.putString("secondPlayerScoreSave", secondPlayerScoreTextView.getText().toString()); 
       editor.putInt("nowPlayerSave", nowPlayer);   
       editor.commit(); 

     } 


     private void readSettings() { 
    //"time" parameter program reads in another method 
        firstPlayerNameTextView.setText(preferences.getString("firstPlayerNameSave", "")); 
        secondPlayerNameTextView.setText(preferences.getString("secondPlayerNameSave", "")); 
        firstPlayerScoreTextView.setText(preferences.getString("firstPlayerScoreSave", "")); 
        secondPlayerScoreTextView.setText(preferences.getString("secondPlayerScoreSave", "")); 
        nowPlayer = preferences.getInt("nowPlayerSave", -1); 

      } 

我怎麼知道,writeSettings()的第一項出現問題。 但我不知道我在做什麼錯?

對不起,我的英文。

upd。

12-23 16:23:31.334: ERROR/AndroidRuntime(410): Uncaught handler: thread main exiting due to uncaught exception 
12-23 16:23:31.520: ERROR/AndroidRuntime(410): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.game/com.game.Game}: java.lang.NullPointerException 
12-23 16:23:31.520: ERROR/AndroidRuntime(410):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2417) 
12-23 16:23:31.520: ERROR/AndroidRuntime(410):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512) 
12-23 16:23:31.520: ERROR/AndroidRuntime(410):  at android.app.ActivityThread.access$2200(ActivityThread.java:119) 
12-23 16:23:31.520: ERROR/AndroidRuntime(410):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863) 
12-23 16:23:31.520: ERROR/AndroidRuntime(410):  at android.os.Handler.dispatchMessage(Handler.java:99) 
12-23 16:23:31.520: ERROR/AndroidRuntime(410):  at android.os.Looper.loop(Looper.java:123) 
12-23 16:23:31.520: ERROR/AndroidRuntime(410):  at android.app.ActivityThread.main(ActivityThread.java:4363) 
12-23 16:23:31.520: ERROR/AndroidRuntime(410):  at java.lang.reflect.Method.invokeNative(Native Method) 
12-23 16:23:31.520: ERROR/AndroidRuntime(410):  at java.lang.reflect.Method.invoke(Method.java:521) 
12-23 16:23:31.520: ERROR/AndroidRuntime(410):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
12-23 16:23:31.520: ERROR/AndroidRuntime(410):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
12-23 16:23:31.520: ERROR/AndroidRuntime(410):  at dalvik.system.NativeStart.main(Native Method) 
12-23 16:23:31.520: ERROR/AndroidRuntime(410): Caused by: java.lang.NullPointerException 
12-23 16:23:31.520: ERROR/AndroidRuntime(410):  at android.content.ContextWrapper.getPackageName(ContextWrapper.java:120) 
12-23 16:23:31.520: ERROR/AndroidRuntime(410):  at android.app.Activity.getLocalClassName(Activity.java:3410) 
12-23 16:23:31.520: ERROR/AndroidRuntime(410):  at android.app.Activity.getPreferences(Activity.java:3444) 
12-23 16:23:31.520: ERROR/AndroidRuntime(410):  at com.game.Game.<init>(Game.java:69) 
12-23 16:23:31.520: ERROR/AndroidRuntime(410):  at java.lang.Class.newInstanceImpl(Native Method) 
12-23 16:23:31.520: ERROR/AndroidRuntime(410):  at java.lang.Class.newInstance(Class.java:1479) 
12-23 16:23:31.520: ERROR/AndroidRuntime(410):  at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 
12-23 16:23:31.520: ERROR/AndroidRuntime(410):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2409) 
12-23 16:23:31.520: ERROR/AndroidRuntime(410):  ... 11 more 

Game.java:69是SharedPreferences preferences = getPreferences(MODE_PRIVATE);

+0

什麼?你應該看到你的日誌貓 – 2010-12-23 10:16:50

+0

是的,出現了哪個問題?您應該複製調試輸出(日誌)中的錯誤。 – 2010-12-23 10:54:29

回答

14

這是我要做的事:

Editor editor = PreferenceManager.getDefaultSharedPreferences(Context).edit(); 
       editor.putString("firstPlayerNameSave", firstPlayerNameTextView.getText().toString());    
       editor.commit(); 

,並閱讀:

firstPlayerNameTextView.setText(PreferenceManager.getDefaultSharedPreferences(Context).getString("firstPlayerNameSave", "")); 
1

我要做的就是幾乎與martipelant建議的相同。

獲取編輯:

Editor preferenceEditor = getSharedPreferences("com.mycompany.android.myapp",MODE_PRIVATE).edit(); 

和閱讀:

 mSharedPreferences = getSharedPreferences("com.mycompany.android.myapp",Context.MODE_PRIVATE); 
1

AFAIK Activity.getPreferences()Context.getSharedPreferences(String, int)的包裝,其中字符串是活動的名稱。 它只能用於訪問此活動專用的首選項。 嘗試將代碼

SharedPreferences preferences = getPreferences(MODE_PRIVATE); 

改變

SharedPreferences preferences = PreferenceManager 
       .getDefaultSharedPreferences(context); 
有關異常