2014-06-14 5 views
0

Asynctask에 문자열 값을 전달할 수 있지만 배열을 전달할 수 없습니다.배열을 Asynch 작업에 전달

아무도 알려주시겠습니까? 어떻게해야합니까?

그리고 그 배열을 서버에 전달하고 싶습니다. (//printwriter.write(messsages);) ... 어떻게 이것을 할 수 있습니까?

{ 
String[] trymessage = new String[3]; 


for(int x=0;x<3;x++) 
       { 
        trymessage[x]= Integer.toString(x); 
       } 
new Asynctask1().execute(trymesssage);  
      } 


public class Asynctask1 extends AsyncTask<String, Void, Void> { 
     private PrintWriter printwriter;  
    protected Void doInBackground(String... messages) { 
    final String IP_ADDRESS = "192.168.0.4"; 
     final int DEST_PORT = 4444; 

     try { 
      Socket client = new Socket(IP_ADDRESS, DEST_PORT); // connect to server 
      printwriter = new PrintWriter(client.getOutputStream(), true); 
      printwriter.write(messsages); // write the message to output stream 

      printwriter.flush(); 
      printwriter.close(); 
      client.close(); 
     }          
    } 
     else{}    
     return null; 
    } 
}          

Asynctask1 인수를 String, void, String []으로 변경하려고 생각했습니다. 그러나 효과적인 결과는 없습니다.

답변

0

쉬운 솔루션은 새로운 생성자를 생성하는 것입니다 : AsyncTask를의 인수를 변경

public class Asynctask1 extends AsyncTask<Void, Void, Void> { 
    private String[] mMessages; 

    public Asynctask1(String[] messages) { 
     mMessages = messages; 
    } 

    // ... 
}          
0

시도가 문자열 [], 무효, 무효가 될 수 있습니다.

첫 번째 인수는 doInBackground()에 보낼 매개 변수 유형을 나타냅니다.

세 번째 인수는 onPostExecute()에 보낼 매개 변수 유형을 나타냅니다.

이 시도 :의 PrintWriter의

또한
for(int x=0;x<3;x++) 
    { 
     trymessage[x]= Integer.toString(x); 
    } 
    new Asynctask1().execute(trymessage); 
} 

public class Asynctask1 extends AsyncTask<String[], Void, Void> { 
    private PrintWriter printwriter; 

    protected Void doInBackground(String[]... messages) { 
     final String IP_ADDRESS = "192.168.0.4"; 
     final int DEST_PORT = 4444; 
     String[] messageList = messages[0]; 
     if (messageList != null) { 
      try { 
       Socket client = new Socket(IP_ADDRESS, DEST_PORT); // connect to server 

       for (String message : messageList) { 
        System.out.println(message); 
       } 

       printwriter = new PrintWriter(client.getOutputStream(), true); 

       for (String message : messageList) { 
        printwriter.write(message); // write the message to output stream 
       } 

       printwriter.flush(); 
       printwriter.close(); 
       client.close(); 
      } catch (Exception e) { 
       Log.e("[email protected]", e.getMessage(), e); 
      } 
     } 
     return null; 
    } 
} 

, 메소드 쓰기()는 배열을 보낼 수 없습니다, 당신은 문자열

에 의해 그것을 문자열을 전송해야합니다