NetworkOnMainThreadException-尝试制作新的Thread和ASyncTask

时间:2013-05-09 20:39:16

标签: java android networking

我一直试图让它工作一段时间。我正在尝试将手机上的信息发送到笔记本电脑上的简单服务器。我一直在获取NetworkOnMainThreadException,我已经尝试创建一个新线程(新的Runnable()等和ASynchTask但我仍然得到错误,应用程序正在强行关闭。我已经阅读了类似于3或4的问题这个,但没有一个对我有用。这是我的代码:

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();
        }

    });

2 个答案:

答案 0 :(得分:2)

尝试从代码中删除以下部分。

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

在这个帖子中这样做是不正确的。

答案 1 :(得分:0)

您必须YourActivity.this.runOnUiThread(new Runnable() { public void run() { /* show your toast here */ });