2017-05-25 34 views
0
public void inValidMobileNumber() { 

    if (TokenUtils.isInvalidDob()) { 
     startActivity(new Intent(PersonalInfo.this,PassTwo.class)); 
     overridePendingTransition(R.anim.dashboard_right_from,R.anim.dashboard_right_to); 
     TokenUtils.setisInvalidDob(false); 
    } 
    else { 
     TokenUtils.setisInvalidDob(true); 
     Intent intent = new Intent(PersonalInfo.this, MobileNumber.class); 
     intent.putExtra("reportId", reportId); 
     intent.putExtra("activityCode", CreditMantriConstants.TELL_US_MORE_ACTIVITY); 
     startActivity(intent); 
     overridePendingTransition(R.anim.dashboard_right_from, R.anim.dashboard_right_to); 
    } 

} 

公共靜態無效setisInvalidDob(布爾DOB){ SharedPreferences喜好= PreferenceManager.getDefaultSharedPreferences(CreditMantriApplication.getCreditMantri())設置真後假獲取; final SharedPreferences.Editor edit = preferences.edit(); edit.putBoolean(「dob」,dob); edit.apply(); }即使在sharedpreferences安卓

public static Boolean isInvalidDob() 
{ 
    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(CreditMantriApplication.getCreditMantri()); 
    return preferences.getBoolean("dob",false); 
} 

這裏是我獲得了第二次時間碼爲真invalidDob

+0

你試過用'boolean'而不是'Boolean'嗎? –

+0

而不是edit.apply()嘗試edit.commit(); – Palanivelraghul

+0

是啊,它的工作感謝.. Zarul Izham –

回答

1

使用

edit.commit(); 

,而不是

edit.apply(); 

由於edit.commit(); edit.apply()時立即保存;在後臺做

+0

不,你仍然應該使用apply()。它會立即在內存中應用這些更改,因此如果您從相同的SharedPreferences中讀取(它們是同一個進程中的單例),您將立即獲得新值。只有物理保存到磁盤纔會延遲。這些都寫在文檔中。 – BladeCoder