我一生都无法弄清楚为什么我不能让这个方法进入 if 语句。
protected void foo() {
Date d = new Date();
long now = d.getTime();
long start;
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
start = settings.getLong(FIRST_USE_DATE, 0);
Log.w(this.getClass().getName(), Long.toString(start));
if (start == 0) {
SharedPreferences.Editor editor = settings.edit();
editor.putLong(FIRST_USE_DATE, now);
}
返回真; }
请注意,日志和 Debug模式显示“start = 0”
我也尝试过
if (start == 0l) {
if (start == 0L) {
我到底错过了什么? 0 != 0 吗?
我正在 Eclipse 中使用 Java for Android 进行开发。谢谢。
编辑:
@methodin - 不抱歉,那不起作用。
@Aioobe - 我在 IF 语句下有一个断点,但它永远不会被创建。
Edit2:这是自从您询问以来我正在运行的实际代码。
protected boolean isDemoExpired() {
Date d = new Date();
long now = d.getTime();
long demoStart;
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
demoStart = settings.getLong(FIRST_USE_DATE, 0);
if (demoStart == 0) {
SharedPreferences.Editor editor = settings.edit();
editor.putLong(FIRST_USE_DATE, now);
System.out.println(Long.toString(demoStart));
return false;
}
return true;
}
最佳答案
我认为你的问题恰恰相反。 我刚刚调试了您的代码并且它可以工作,问题是 if 语句始终为 true,因为对 FIRST_USE_DATE 变量进行更改后没有 editor.commit() 。
protected void foo() {
Date d = new Date();
long now = d.getTime();
long start;
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
start = settings.getLong(FIRST_USE_DATE, 0);
Log.w(this.getClass().getName(), Long.toString(start));
if (start == 0) {
SharedPreferences.Editor editor = settings.edit();
editor.putLong(FIRST_USE_DATE, now);
***editor.commit();***
}
}
编辑:我刚刚尝试调试您的实际代码,但发生了同样的事情:if 语句始终为真,并且每次都会执行,因为没有 editor.commit() 来保存对 FIRST_USE_DATE 变量的更改。
protected boolean isDemoExpired() {
Date d = new Date();
long now = d.getTime();
long demoStart;
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
demoStart = settings.getLong(FIRST_USE_DATE, 0);
if (demoStart == 0) {
SharedPreferences.Editor editor = settings.edit();
editor.putLong(FIRST_USE_DATE, now);
****editor.commit();****
System.out.println(Long.toString(demoStart));
return false;
}
return true;
}
关于java - 在 if 语句中测试 Java Long 值。 0 != 0 吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4078009/