-1

レイアウトを変更したいクラスにデータを送信しています。次の方法でデータを送信します。

while(接続){

    //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 に答える