Java 向处理程序发送字符串消息时出错:无法将字符串转换为int
从我的应用程序的主线程,我试图发送字符串消息,这些消息将被发送到TCPClient,并将通过套接字持续发送 这是我的TCP客户端: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
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中存储整数,而不能存储字符串。