Java setText在尝试显示字节值时使应用程序崩溃
我正在开发一个android应用程序,它可以发送和接收数据。在应用程序中,我有一个按钮和几个视图。当我按下按钮时,数据(两个字符)将被发送。发送的数据将显示在两个tekst视图中 我对两个整数做了同样的处理,现在我想对字节和字符做同样的处理,但失败了 logcat给出以下错误: 10-28 09:27:19.338:E/AndroidRuntime(13138):android.content.res.Resources$NotFoundException:字符串资源ID#0x0 以下是onClick lisener代码:Java setText在尝试显示字节值时使应用程序崩溃,java,android,Java,Android,我正在开发一个android应用程序,它可以发送和接收数据。在应用程序中,我有一个按钮和几个视图。当我按下按钮时,数据(两个字符)将被发送。发送的数据将显示在两个tekst视图中 我对两个整数做了同样的处理,现在我想对字节和字符做同样的处理,但失败了 logcat给出以下错误: 10-28 09:27:19.338:E/AndroidRuntime(13138):android.content.res.Resources$NotFoundException:字符串资源ID#0x0 以下是onCl
@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函数,它可以工作!我尝试对receive函数执行相同的操作。当数据可用时,调用此事件处理程序函数
当我使用setText函数时,它会在几个周期后使ap崩溃,在这个函数中,我有三个setText操作。只调用第一个(然后应用程序崩溃)。当我更改这些操作的顺序时,仍然只调用第一个。可能是应用程序显示了第一个settext操作,但崩溃了吗?我使用虚拟数据,因此当调用eventhandler函数时,不会使用实际接收的数据,但在第一次操作后应用程序仍会崩溃。有人有建议吗
另一方面,数据每秒发送一次
以下是OnReceive(事件处理程序)函数:
@覆盖
public void onReceive(com.example.communicationmodulebase.Client客户端,字节[]数据)
{
Log.e(标记“In handler!”);
//控制值
ArrayRecieved[0]=“C”;
ArrayRecieved[1]=“B”;
如果(数据长度<2){
返回;
}
//设置已在数组中接收的数据
//ArrayRecieved[0]=数据[0];
//ArrayRecieved[1]=数据[1];
char字节1=(char)ArrayRecieved[0];
char字节2=(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);
setText(“在处理程序中!”);
}
})) 设置一些更改,如
Ytext.setText(""+Byte1);
设置一些更改,例如
Ytext.setText(""+Byte1);
setText()
需要字符串或资源id(int)。如果要显示数值,需要将其转换为字符串,即:
setText(String.valueOf(someInt));
setText()
需要字符串或资源id(int)。如果要显示数值,需要将其转换为字符串,即:
setText(String.valueOf(someInt));
尝试如下:
Ytext.setText(""+Byte1);
Xtext.setText(""+Byte2);
尝试如下:
Ytext.setText(""+Byte1);
Xtext.setText(""+Byte2);
您正在使用的方法的签名采用字符序列,因此采用字符序列。使用
setText(someEmptyString+Byte1)
,您可以从someEmptyString(您将其定义为“”)和Byte1的串联中创建一个字符序列。您正在使用的方法的签名采用字符序列,因此是字符序列。使用setText(someEmptyString+Byte1)
,可以从someEmptyString(定义为“”)和Byte1的串联中创建一个字符序列。TextView有两种方法,如
TextView.setText(CharSequence) and TextView.setText(int).
1) 第一个方法直接将文本分配给TextView,该文本作为CharSequence传递(可以是String、StringBuffer、Spanable…)2) 第二个方法搜索您在资源中定义的字符串资源,ID作为参数传递。
您将
char
作为参数传递。此char
类型转换为int
并将其作为TextView.setText(int)
调用,并搜索具有该int
ID的资源字符串,其值未在资源中定义。键入cast
char
asString
likeString.valueOf(char)
并重试一次…TextView有两种方法,如
TextView.setText(CharSequence) and TextView.setText(int).
1) 第一个方法直接将文本分配给TextView,该文本作为CharSequence传递(可以是String、StringBuffer、Spanable…)2) 第二个方法搜索您在资源中定义的字符串资源,ID作为参数传递。
您将
char
作为参数传递。此char
类型转换为int
并将其作为TextView.setText(int)
调用,并搜索具有该int
ID的资源字符串,其值未在资源中定义。键入cast
char
asString
likeString.valueOf(char)
并重试一次…我已经用recieve函数更新了我的帖子。当我注释掉所有settext操作时,应用程序不会崩溃。谢谢你对我发送代码的回复。我已经用我的接收功能更新了我的帖子。当我注释掉所有settext操作时,应用程序不会崩溃。谢谢你对我发送代码的回复。谢谢你的回复!对于发送数据,它是有效的!只有在receive函数中它不起作用。它仅显示一个setText操作,然后显示CHRASH(?)。我已经更新了我的代码。你能看一下吗?我能;t读取Catlog,因为USB连接到Arduino上的USB主机控制器。有没有办法找出可能的错误?我猜这是以下错误:logcat给出了以下错误:10-28 09:27:19.338:E/AndroidRuntime(13138):android.content.res.Resources$NotFoundException:String resource ID#0x0可能你又犯了同样的错误。有些地方输入字符,谢谢你的回复!对于发送数据,它是有效的!只有在receive函数中它不起作用。它仅显示一个setText操作,然后显示CHRASH(?)。我已经更新了我的代码。你能吗