Daniel Scott
Daniel Scott

Reputation: 1887

NetworkOnMainThreadException- Have tried making a new Thread and also ASynchTask

I've been trying to get this to work for a while. I'm trying to send a message from my phone to a simple server on my laptop. I keep getting the NetworkOnMainThreadException, I've tried making a new Thread(new Runnable() etc. and an ASynchTask but I am still getting the error and the app is force closing. I have read through 3 or 4 of the questions similar to this but none have worked for me. Here is my code:

final Button post2 = (Button) findViewById(R.id.postbutton2);

    post2.setOnClickListener(new OnClickListener(){

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            new Thread(new Runnable() {
                // TODO Auto-generated method stub

                @Override
                public void run() {
                    // TODO Auto-generated method stub

                    message = text.getText().toString(); //Message is a string, text is an EditText.
                    text.setText("");

                    try {
                        clientSocket = new Socket("10.0.0.2", 4445);
                        printWriter = new PrintWriter(clientSocket
                                .getOutputStream(), true);
                        printWriter.write(message);

                        printWriter.flush();
                        printWriter.close();
                        clientSocket.close();

                    } catch (UnknownHostException e) {
                        e.printStackTrace();
                        Toast.makeText(context, e.toString(),
                                Toast.LENGTH_SHORT).show();
                    } catch (IOException e) {
                        e.printStackTrace();
                        Toast.makeText(context, e.toString(),
                                Toast.LENGTH_SHORT).show();
                    }
                }

            }).start();
        }

    });

Upvotes: 1

Views: 275

Answers (2)

Ramp
Ramp

Reputation: 1772

try removing the following part from your code.

message = text.getText().toString(); //Message is a string, text is an EditText.
                    text.setText("");

It does not look right to do this in this thread.

Upvotes: 2

Alexander
Alexander

Reputation: 48272

You must do YourActivity.this.runOnUiThread(new Runnable() { public void run() { /* show your toast here */ });

Upvotes: 0

Related Questions