Testen eines Java-Long-Wert in einer if-Anweisung. Gilt 0 != 0

Für das Leben von mir ich kann nicht herausfinden, warum ich nicht bekommen kann diese Methode geben Sie die if-Anweisung.

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);        
    }

return true;
}

Beachten Sie, dass die log-und debug-Modus zeigt sich, dass "start = 0"

Ich habe auch versucht

if (start == 0l) {
if (start == 0L) {

Was zum Teufel übersehe ich hier? Gilt 0 != 0?

Entwickle ich in Eclipse mit Java für Android. Danke.

Bearbeitet:

@methodin - Nein sorry, das funktioniert nicht.

@Aioobe - ich habe einen Haltepunkt unter der IF-Anweisung, die nie gestellt wird.

Edit2: Hier ist der eigentliche code bei mir läuft, seit du gefragt hast.

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;
    }
  • Was ist, wenn((long)start == 0)
  • Haben Sie einen debug-Ausgabe innerhalb der if-Zweig? Sind Sie sicher, dass Sie nicht in Sie gehen?
  • Bearbeitete original-post für Ihre Kommentare.
  • Ich denke, aioobe Mittel setzen Sie ein System.out.println("Yep, definietly in the if statement"); in Ihrem if-Anweisung. Ich habe gesehen, Haltepunkte nicht vor.
  • Ich habe es und meine eigentliche code.
  • Könnte settings.getLong(FIRST_USE_DATE, 0); werden eine Ausnahme werfen?
  • Sie versuchen, stellen Sie sicher, dass Sie in die if, doch Sie legte Ihre println in der Nähe des Ende. Dies ist ein Fehler, denn es ist möglich, dass Sie werfen können, bevor dieser Punkt. Legen Sie ein Druck-unmittelbar vor der if, und man sofort nach der öffnenden Klammer.
  • Und da dieser aussieht wie GUI-code, bewusst sein, dass nicht abgefangene Ausnahmen im wesentlichen verschwinden -- die Methode nicht komplett, aber Sie können nie wissen, die die Ausnahme (in der Sun-JVM, Sie werden in die Konsole geschrieben wird, aber bei Android wahrscheinlich nicht).
  • Was passiert, wenn Sie Schritt für Schritt durch die Methode? also Pause vor dem 'wenn'. Ich, euer breakpoint auf das 'return false' Zeile wird nie ausgelöst. Ich habe dieses bit-code in eine Android-app und soweit ich sehen kann, das system.outs nicht überall, auch wenn die 'if' - block eingegeben wird

InformationsquelleAutor user432209 | 2010-11-02
Schreibe einen Kommentar