2016-02-03 34 views
0

我使用sharedpreferences檢查應用程序是否第一次使用或不使用。如果該應用程序正在使用第一次註冊屏幕將顯示,然後MainActivity將顯示註冊是否成功完成或稍後使用。註冊屏幕首次顯示應用何時運行,但問題出現在註冊中。同時從MainActivity調用共享首選項以在其中插入值。而問題是RuntimeException的。這是我在做什麼針對...RuntimeException嘗試將使用Asynctask從服務器獲取的值存儲到sharedpreferences

這是我MainActivity.java

SharedPreferences sp; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    firtst_time_check(); 
    setContentView(R.layout.available_items);.....} 

這是first_time_check()

private boolean firtst_time_check(){ 
    sp = PreferenceManager.getDefaultSharedPreferences(this); 
    String first = sp.getString("first", null); 
    if (first == null){ 
     Intent i = new Intent(getBaseContext(), MainActivity.class); 
     startActivity(i); 
    } 
    return false; 
} 

這是代碼註冊畫面,例外情況投入此線MainActivity set = new MainActivity();

JSONArray a = o.optJSONArray("status"); 
JSONObject obj = a.optJSONObject(0); 
String uid = obj.optString("RegistrationID"); 
MainActivity set = new MainActivity(); 
set.sp = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
String value = set.sp.getString("RegistrationID", uid); 
SharedPreferences.Editor editor = set.sp.edit(); 
editor.putString("first", value); 
editor.commit(); 

t他是怎樣表示的logcat

lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() 
+0

提供錯誤的堆棧跟蹤.. – ELITE

+0

私人布爾firtst_time_check()這個公共靜態布爾firtst_time_check(上下文的背景下) – Madhur

+0

什麼是異常堆棧跟蹤和消息?請用這個關鍵信息更新你的問題 – Lolo

回答

1

沒有,需要通過使用spMainActivityRegistration screen節省SharedPreferences價值創造活動的對象,因爲PreferenceManager.getDefaultSharedPreferences也返回SharedPreferences例如我們可以用它來保存和鍵盤它的價值。變化:

MainActivity set = new MainActivity(); 
set.sp = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(
         getApplicationContext()); 
+0

好吧,我會試試這個,並告訴你有關結果.... –

+0

非常感謝你保存了我的一天,這是工作很好..... –

相關問題