2013-02-06 50 views
0

我有一个简单的if语句的问题。我想借助传入数据修改2 ImageView的可见性。出于某种原因,数据仅影响if语句一次。声明在哪里假设是不断更新的?如果语句只检查一次?

这是我的onCreate()

 if (TCPClient.Led.equals(High)){ 
      Inum1.setVisibility(ImageView.GONE); 
      Inum2.setVisibility(ImageView.VISIBLE); 
     } 
     if (TCPClient.Led.equals(Low)){ 
      Inum1.setVisibility(ImageView.VISIBLE); 
      Inum2.setVisibility(ImageView.GONE); 
     } 

我从另一个类获得里面的数据:

   while (mRun) { 
       serverMessage = in.readLine(); 

       if (serverMessage != null && mMessageListener != null) { 
        //call the method messageReceived from MyActivity class 
        mMessageListener.messageReceived(serverMessage); 
        Log.e("Listenner",serverMessage); 
        TCPClient.Led = new String(serverMessage); 
       } 
       serverMessage = null; 

      } 

感谢您的帮助。

+1

要确定这么多的代码很复杂,第二块代码是返回到前一个活动或创建一个新活动的活动?如果是第一种情况,你应该把它放在onRestart()方法上,因为它不会再通过onCreate()。如果它不起作用,请输入更多信息。 – Rigotti

+0

我没有把我所有的代码放在里面,因为它真的很长,只有这个部分对我的问题很重要(我相信)。第一个代码在我的活动“domotique”中,第二个代码块在“TCPClient”类中。 – user2047596

回答

0

如果它是在您的onCreate中完成的,则只会在创建活动时完成一次。你应该把你的if语句放到你的循环中,以便每次得到一条新消息时检查。

+0

我应该把它放在哪个循环中?在我的messageReceived() – user2047596

+0

那么每当你的TCPClient.Led值改变时,你可以调用一个函数来更新你的视图。如果你的活动是在不同的线程中,有很多方法可以做到这一点。我喜欢在活动中实现通信接口,以便tcp线程可以调用此接口并更新UI。 – psykhi