Ok, that helps, but what is Runnable action and how is it related to thread?
On Oct 16, 3:00 pm, Kostya Vasilyev <kmans...@gmail.com> wrote: > You can only access UI objects from the main (UI) thread. > > There are several ways to "post" UI operations to the UI thread. > > This one is probably the easiest: Activity.runOnUIThread(Runnable action) > > http://developer.android.com/reference/android/app/Activity.html#runO...) > > -- Kostya > > 16.10.2010 20:58, chcat пишет: > > > > > I have an Activity with TextView that I am trying to update from > > different thread. To do that i pass TextView to the "updater" thread > > onCreate(..) > > .. > > txtStatus = (TextView)this.findViewById(R.id.status); > > // start udp server as separate thread and pass TextView to that > > thread to print text messages from udp socket > > > new Thread(new TelemetryServer(txtStatus)).start(); > > //see thread code below > > > As a result i have thread error, even though "updater" is > > synchronized: > > ERROR/UDP(282): android.view.ViewRoot$CalledFromWrongThreadException: > > Only the original thread that created a view hierarchy can touch its > > views. > > Any other ideas how to solve this problem? > > Tnank you, > > -V > > > public class TelemetryServer implements Runnable { > > public static final String SERVERIP = "127.0.0.1"; // 'Within' the > > emulator! > > public static final int SERVERPORT = 2222; > > private TextView m_view; > > private DatagramSocket socket; > > private boolean loop; > > private synchronized void update( String msg) > > { > > m_view.append("\n"); > > m_view.append(msg); > > } > > > public TelemetryServer(TextView _view) > > { > > m_view = _view; > > loop = true; > > } > > public void run() { > > try { > > InetAddress serverAddr = > > InetAddress.getByName(SERVERIP); > > Log.d("UDP", "S: Connecting..."); > > > socket = new DatagramSocket(SERVERPORT, > > serverAddr); > > Log.i("TelemetryServer", "started"); > > while(loop) { > > byte[] buf = new byte[1024]; > > DatagramPacket packet = new > > DatagramPacket(buf, buf.length); > > socket.receive(packet); > > update(new String(packet.getData())); > > } > > > } catch (Exception e) { > > > Log.e("UDP", "S: Error", e); > > > } // end of try > > Log.d("UDP", "S: Done."); > > socket.close(); > > } > > } > > -- > Kostya Vasilyev -- WiFi Manager + pretty widget > --http://kmansoft.wordpress.com -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en