2013-05-20 5 views
-1

Я отправляю данные в класс, который я хотел изменить. Я посылаю данные по followinf пути:Invalidate() crashing

в то время как (подключен) {

//receive data through socket 
    in = new BufferedReader(new InputStreamReader(socket.getInputStream())); 

    while ((line = in.readLine()) != null){ 

     String [] aarray = line.split("[^\\d]+");     

     if (aarray != null){ 

      for(int i = 0; i < aarray.length; i++){ 

       number = Integer.parseInt(aarray[i]); 

        } 

       } 

       Log.d(TAG, "Line " + String.valueOf(line));    

       myCompassView.updateDirection(number); 

updateDirection вызывает следующую функцию:

public void updateDirection(float dir){ 

    direction = dir; 
    Log.d(main.TAG, "mudou direction " + String.valueOf(direction)); 

    invalidate(); 

} 

и я хотел это invalidade() для вызова OnDraw (Canvas canvas) снова, но вместо этого он приводит к сбою приложения.

Я не понимаю проблему, хотя invalidate() был довольно прямолинейным.

Если кто-то может мне помочь, я был бы очень признателен.

+0

Вы подклассифицируете представление? – Blackbelt

+0

Зачем? – Tarun

ответ

1

Вместо этого использовать postInvalidate(). Или:

runOnUiThread(new Runnable() { 
@Override 
public void run() { 
    invalidate(view) 
} 
}); 
+0

Спасибо, postInvalidate() отлично поработал. Поэтому я предполагаю, что это было потому, что я не отправлял запрос в пользовательский интерфейс. – user2115240