2013-05-20 3 views
-1

레이아웃을 변경하려는 클래스에 데이터를 보내고 있습니다. (연결)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를 호출하기를 원했다 나는 followinf 방법으로 데이터를 전송 (Canvas canvas) 함수가 다시 작동하지만 대신 응용 프로그램이 충돌합니다.

나는이 문제를 이해하지 못한다.하지만 invalidate()는 꽤 간단하다.

누군가 나를 도울 수 있다면 정말 감사하겠습니다.

+0

보기를 하위 클래스 화 하시겠습니까? – Blackbelt

+0

예외는 무엇입니까 ?? – Tarun

답변

1

postInvalidate()을 대신 사용하십시오. 또는 :

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

감사합니다. postInvalidate()는 훌륭하게 작동했습니다. 그래서 나는 그것이 UI 스레드에 요청을 게시하지 않았기 때문이라고 생각합니다. – user2115240