2013-05-09 15 views
1

我一直試圖讓這個工作一段時間。我正嘗試從我的手機發送一條消息到筆記本電腦上的簡單服務器。我不斷收到NetworkOnMainThreadException,我嘗試了一個新線程(新的Runnable()等)和一個ASynchTask,但我仍然收到錯誤,應用程序強制關閉。我已經閱讀了3或4個類似於。這一點,但沒有爲我在這裏工作是我的代碼:NetworkOnMainThreadException - 試圖製作一個新的線程也ASynchTask

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

    }); 
+1

你這次得到什麼例外? – 2013-05-09 20:43:44

+0

我仍然收到NetworkOnMainThreadException。 – 2013-05-09 20:47:49

+0

請發佈您的整個堆棧跟蹤。 – CommonsWare 2013-05-09 20:59:20

回答

2

嘗試從代碼中刪除以下部分

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

看起來不正確的。在此線程中執行此操作。

+0

是的,工作,謝謝! – 2013-05-09 21:22:39

0

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

+0

我剛剛嘗試過那裏,發生了什麼事是該應用程序剛剛變得完全沒有動畫和力量關閉。這次我得到了一個N​​ullPointerException。我的答案是否做錯了? – 2013-05-09 21:01:38

+0

這解決了敬酒的問題!結合坡道建議,整個問題都解決了。謝謝 – 2013-05-09 21:21:35

相關問題