Yep. It seams quite obvious. Thoug we do not know what happens in "statusTxt.setText("")" you are probably calling any UI object (changing a Dialog message or what so ever). That's not nice. *grin*
maybe you should use runOnUiThread(new Runnable() { @Override public void run() { statusTxt.setText("App is now connected to:\n" + IP + " : "+ Port); } }); Stephan On 19 Jul., 20:16, Brion Emde <brione2...@gmail.com> wrote: > It looks to me that you are trying to do stuff in the UI Thread while > in the doInBackground() function. > > You are supposed to do UI related stuff in the onPostExecute(), > onPreExecute() and onProgressUpdate(), not in doInBackground. > > This is what I'm talking about: > > if (socket.isConnected()) { > OutputStreamOut = new > ObjectOutputStream(socket.getOutputStream()); > InputStreamIn = new > ObjectInputStream(socket.getInputStream()); > // everything worked fine until here > > !!!! This is talking to the UI Thread -> not allowed!!! > > statusTxt.setText("App is now > connected to:\n" + IP + " : " > + Port); // CRASHING !!!! > connectBt.setText("Disconnect"); > connected = true; > continueBt.setVisibility(0); > } else { > throw new UnknownHostException(); > } > > On Jul 19, 11:47 am, Francesco <francescoponti...@gmail.com> wrote: > > > Hi, when trying to start a socket connection in an AsyncTask, my > > application crashes for no reason (debugger says > > "android.view.ViewRoot$CalledFromWrongThreadException: Only the > > original thread that created a view hierarchy can touch its views."). > > > If I remove the Async and use the same code, my application works (of > > course, if I make the socket connect to a not valid IP or port, the > > application freezes for 5 seconds, because that's the socket's > > timeout). > > As I'd like to avoid that 5 seconds freeze with wrong configurations, > > I have to implement the AsyncTask. > > > The application works just fine opening the socket and everything > > related, but as I try and make it change some TextViews, it gives this > > error. The AsyncTask doc says: > > > "AsyncTask enables proper and easy use of the UI thread. This class > > allows to perform background operations and publish results on the UI > > thread without having to manipulate threads and/or handlers." > > > So I'm doing something legit. > > > This is the code, it's quite simple: > > > private class ConnectTask extends AsyncTask<Void, Void, Void> { > > protected Void doInBackground(Void... params) { > > try { > > InetAddress inetAddr = InetAddress.getByName(IP); > > int PORT = Integer.parseInt(Port); > > > if (PORT < 0) > > throw (new NumberFormatException()); > > if (IP.equals("")) > > throw (new UnknownHostException()); > > > SocketAddress sockaddr = new > > InetSocketAddress(inetAddr, > > PORT); > > socket = new Socket(); > > socket.connect(sockaddr, 5000); > > > if (socket.isConnected()) { > > OutputStreamOut = new > > ObjectOutputStream(socket.getOutputStream()); > > InputStreamIn = new > > ObjectInputStream(socket.getInputStream()); > > // everything worked fine until here > > statusTxt.setText("App is now connected > > to:\n" + IP + " : " > > + Port); // CRASHING !!!! > > connectBt.setText("Disconnect"); > > connected = true; > > continueBt.setVisibility(0); > > } else { > > throw new UnknownHostException(); > > } > > } catch (SocketTimeoutException sockExc) { > > statusTxt.setText("Connection timeout:\nplease, > > review your IP/ > > Port settings."); > > } catch (NumberFormatException numExc) { > > statusTxt.setText("Number Format Error:\nplease, > > review your > > Port settings."); > > } catch (UnknownHostException e1) { > > statusTxt.setText("Unknown Host > > Error:\nplease, review your IP/ > > Port settings."); > > } catch (IOException e2) { > > statusTxt.setText("Input/Output > > Error:\nplease, review your > > connection settings."); > > } finally { > > //dialog.dismiss(); > > } > > return null; > > } > > > protected void onProgressUpdate(Void... progress) {} > > > protected void onPostExecute(Void result) {} > > } -- 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