2017-05-25 32 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