Java 向处理程序发送字符串消息时出错:无法将字符串转换为int

Java 向处理程序发送字符串消息时出错:无法将字符串转换为int,java,android,Java,Android,从我的应用程序的主线程,我试图发送字符串消息,这些消息将被发送到TCPClient,并将通过套接字持续发送 这是我的TCP客户端: public class TCPClient extends Thread { String ip; int port; PrintWriter out; Handler handler; TCPClient(String ip, int port) { this.ip = ip; t

从我的应用程序的主线程,我试图发送字符串消息,这些消息将被发送到TCPClient,并将通过套接字持续发送

这是我的TCP客户端:

public class TCPClient extends Thread
{
    String ip;
    int port;
    PrintWriter out;
    Handler handler;

    TCPClient(String ip, int port)
    {
        this.ip = ip;
        this.port = port;

        try
        {
            Socket socket = new Socket(ip,port);

            BufferedReader in = new BufferedReader(
                    new InputStreamReader(socket.getInputStream()));
            out = new PrintWriter(socket.getOutputStream(), true);

        }catch (Exception e)
        {
            Log.d("OKLINUX","Exception while creating socket");
            e.printStackTrace();
        }
    }

    public void run()
    {
        Looper.prepare();
        handler = new Handler(){
            public void handleMessage(Message msg)
            {
                Log.d("OKLINUX","Data sent : "+msg.arg1);
                out.println(msg.arg1);
                out.flush();
            }
        };
        Looper.loop();
    }
}
在我的主线上:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        sender = new TCPClient("192.168.0.7",2016);
        sender.start();

        //some other code

       Message msg = Message.obtain();
       msg.arg1 = "some string";   //this line gives error
       sender.handler.sendMessage(msg);
}

如何传递字符串?

因为arg1和arg2是传递请求类型的int值。使用arg.obj代替

根据javadoc
arg1
是一个
int
而不是
字符串
,这就是为什么会出现此异常

更多细节

如果您愿意,arg1和arg2是使用setData()的低成本替代方案 只需要存储几个整数值

还是从javadoc开始,您应该尝试使用
obj

要发送给收件人的任意对象。当使用Messenger来 跨进程发送消息只有在 包含框架类(不是由 应用程序)。对于其他数据传输,请使用setData(Bundle)


要在何处传递字符串?
public int arg1是来自消息源代码的行<如果只需要存储几个整数值,则code>arg1
arg2
是使用setData()的较低成本替代方案。这意味着,只能在变量arg1中存储整数,而不能存储字符串。