-1

我正在将数据发送到我想要更改布局的类。我通过以下方式发送数据:

而(连接){

    //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() 很简单。

如果有人可以帮助我,我将不胜感激。

4

1 回答 1

2

改为使用postInvalidate()。或者:

runOnUiThread(new Runnable () {
@Override
public void run() {
    invalidate(view)
}
});
于 2013-05-20T10:54:48.240 回答