2012-09-14 64 views
2

我遇到了問題,並且我已經嘗試了在該網站上找到的所有內容,但沒有幫助,所以我自己在問這個問題。Android中的簡單SharedPreferences

我的代碼是:

public class MyActivity extends Activity{ 

    protected PositionSense positionSense; 
    protected Preferences preferences; 
    String IP; 
    String ID; 

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     positionSense = new PositionSense(this, null); 
     SharedPreferences settings = getSharedPreferences("preferences", 0); 
     IP = settings.getString("ip", "http://192.168.1.3:8080/servlet"); 
     ID = settings.getString("id", "USER"); 
    } 

後來,我用這些變量在後臺運行的線程,其接觸servlet和發送一些信息(包括保存在喜好的用戶的位置和ID)

我沒有張貼了這一切,因爲我不想阻塞線程超過必要的(但如果需要的話,我將它張貼全部)

在任何情況下,它不工作,它給了我以下錯誤日誌:

09-14 16:47:20.854: WARN/dalvikvm(552): threadid=1: thread exiting with uncaught exception (group=0x409c01f8) 
09-14 16:47:20.884: ERROR/AndroidRuntime(552): FATAL EXCEPTION: main 
     java.lang.IllegalStateException: Could not execute method of the activity 
     at android.view.View$1.onClick(View.java:3044) 
     at android.view.View.performClick(View.java:3511) 
     at android.view.View$PerformClick.run(View.java:14105) 
     at android.os.Handler.handleCallback(Handler.java:605) 
     at android.os.Handler.dispatchMessage(Handler.java:92) 
     at android.os.Looper.loop(Looper.java:137) 
     at android.app.ActivityThread.main(ActivityThread.java:4424) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:511) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
     at dalvik.system.NativeStart.main(Native Method) 
     Caused by: java.lang.reflect.InvocationTargetException 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:511) 
     at android.view.View$1.onClick(View.java:3039) 
     ... 11 more 
     Caused by: java.lang.NullPointerException 
     at com.moodswings.MoodSwingsActivity.clickHappy(MoodSwingsActivity.java:94) 
     ... 14 more 

我不知道該怎麼辦。

有人可以給我SIMPLEST可能的方式來保存一個活動中的偏好設置中的2個字符串,在同一個應用程序中的一些其他活動中使用嗎?這應該是非常簡單的,但我根本無法使它工作,並且我接近我的最後期限。 謝謝!

+3

什麼是'MoodSwingsActivity.java'第94行? – kcoppock

+1

當您使用SharedPreferences.Editor編寫sharedpreferences時,請確保在寫入完成後調用editor.commit()。我錯過了,並有類似的問題 – chaitanya

+2

該錯誤似乎並不是由於SharedPreferences所致。堆棧跟蹤說明了除你的問題之外的其他故事。請交叉檢查你的問題。 – vikas

回答

1

要保存到共享偏好,你可以嘗試:

String ip = "192.168.1.1"; 
SharedPreferences prefs = getSharedPreferences("IP", Context.MODE_PRIVATE); 
prefs.edit().putString("Sample IP", ip).commit(); 

您可以通過共享偏好的信息,您可以嘗試:

String newIP = prefs.getString("Sample IP");//You can also place a default value if needed; to bypass the null character. 

現在將它們傳遞到活動,你可以嘗試做一個intent call like below

**Activity One 
Intent intent = new Intent(getApplicationContext(),SecondActivity.class); 
intent.putExtra("IP",newIp); 
startActivity(intent); 

**Activity Two 
Bundle extras = intent.getExtras(); 
String tmp = extras.getString("IP"); 

您也可以使用this link以供參考。

+0

謝謝大家,我現在就開始工作! :) – user1549053