我正在开发一个发送和接收数据的 android 应用程序。在应用程序中,我有一个按钮和一些 texviews。当我按下按钮时,将发送数据(两个字符)。并且已经发送的数据将显示在两个 tekst 视图中。
我对两个整数做了同样的事情,现在我想对字节和字符做同样的事情,但失败了。
logcat 给出以下错误: 10-28 09:27:19.338: E/AndroidRuntime(13138): android.content.res.Resources$NotFoundException: String resource ID #0x0
下面是 onClick lisener 代码:
@Override
public void onClick(View v) {
// Control value
ArrayOutput[0] = 'B';
ArrayOutput[1] = 'B';
//Creating TextView Variable
TextView text = (TextView) findViewById(R.id.tv);
//Creating TextView Variable
TextView statustext = (TextView) findViewById(R.id.status);
//Sets the new text to TextView (runtime click event)
text.setText("You Have click the button");
// Convert string to bytes
ArrayOutput[0] = ArrayRecieved[0];
ArrayOutput[1] = ArrayRecieved[1];
final char Byte1 = (char) ArrayOutput[0];
final char Byte2 = (char) ArrayOutput[1];
final TextView Xtext = (TextView) findViewById(R.id.xtext);
final TextView Ytext = (TextView) findViewById(R.id.ytext);
Ytext.setText(Byte1);
Xtext.setText(Byte2);
try
{
statustext.setText("Sending....");
server.send(ArrayOutput);
statustext.setText("Sending succes");
}
catch (IOException e)
{
statustext.setText("Sending failed");
Log.e("microbridge", "problem sending TCP message", e);
}
}
});
有人知道问题可能是什么吗?欢迎任何建议!如果我需要提供更多信息,请说出来。
更新
谢谢大家的建议!对于 onclick 功能,它可以工作!我尝试对接收功能做同样的事情。当有可用数据时调用此事件处理函数。
当我使用 setText 函数时,它会在几个周期后使我的 ap 崩溃,在这个函数中我有三个 settext 操作。只有第一个被调用(然后应用程序崩溃)。当我更改这些操作的顺序时,仍然只调用第一个。会不会是应用显示第一个 settext 操作但崩溃了?我使用虚拟数据,所以当调用事件处理函数时,实际接收到的数据没有被使用,但应用程序在第一次操作后仍然崩溃。有人有建议吗?
另一方面,每秒发送一次数据。
下面是 onRecieve(事件处理程序)函数:
@Override
public void onReceive(com.example.communicationmodulebase.Client client, byte[] data)
{
Log.e(TAG, "In handler!");
//Control value
ArrayRecieved[0] = 'C';
ArrayRecieved[1] = 'B';
if (data.length < 2){
return;
}
// Set data that has been recieved in array
//ArrayRecieved[0] = data[0];
//ArrayRecieved[1] = data[1];
char Byte1 = (char) ArrayRecieved[0] ;
char Byte2 = (char) ArrayRecieved[1] ;
TextView Xtext = (TextView) findViewById(R.id.xtext);
TextView Ytext = (TextView) findViewById(R.id.ytext);
Xtext.setText(""+Byte2);
Ytext.setText(""+Byte1);
TextView textRecvStatus = (TextView) findViewById(R.id.RecvStatusText);
textRecvStatus.setText("In handler!");
}
});