2014-10-11 122 views
0

我有改變,如果事情發生布爾變量的值的方法..布爾結果不會改變構造

for (Message msg : msgs) { 
     if (!msgs_array.contains(msg)) { 
      Log.d("Chat", "Message : " + msg.getTitle() + ": " 
        + msg.getMessage()); 
        msgs_array.add(msg); 
      newMsg = true; 
      Log.d("Chat", "New Message ? " + newMsg); 
     } 
    } 

而且我在構造函數中的計時器:

Timer timer = new Timer(); 
    timer.scheduleAtFixedRate(new TimerTask() { 
     @Override 
     public void run() { 
      runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
        Log.d("Chat", "Has New Msg ? " + newMsg); 
       } 
      }); 

     } 
    }, 2000, 2000); 

當條件成立時,我得到日誌貓:新消息?真正 但我仍然計時器記錄它是假..

所以..任何想法? :S

+1

你在哪裏申報newMsg? Timer是否真的在構造函數中創建?或在onCreate? – ben75 2014-10-11 11:09:41

+0

它是我們班的一個領域.. – 2014-10-11 11:10:13

+1

請添加包含上面兩個列表的(相關)代碼。 – Trinimon 2014-10-11 11:11:12

回答

0

嗯,這並沒有回答你的問題,但我建議你使用handler而不是timertask。閱讀 約在這裏http://www.mopri.de/2010/timertask-bad-do-it-the-android-way-use-a-handler/

您可以準確地複製此使用處理器..: -/

+0

謝謝,我做到了。但這並沒有解決的主要問題:( – 2014-10-11 11:31:41

+0

那麼其後的代碼看起來不錯..你改變布爾別的地方.. – Panther 2014-10-11 11:38:30

+0

號。布爾從來沒有在別的地方我上面 – 2014-10-11 11:40:38

0

我認爲string comparing在你的代碼的工作,與equals()替換的變量。

只是試試這個,希望它有助於

for (Message msg : msgs) { 
     if (!msg.equals(msgs_array)) { 
      Log.d("Chat", "Message : " + msg.getTitle() + ": " 
        + msg.getMessage()); 
        msgs_array.add(msg); 
      newMsg = true; 
      Log.d("Chat", "New Message ? " + newMsg); 
     } 
    } 
+0

謝謝,但贏得」提到使用將不起作用的Cuz msgs_array是消息類的數組,我認爲條件是正確的Cuz登錄工作正常 – 2014-10-11 11:54:10

+0

做ü試過這樣嗎?'如果(!msgs_array.equals(MSG))' – 2014-10-11 12:04:52