Java setText在尝试显示字节值时使应用程序崩溃

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

我正在开发一个android应用程序,它可以发送和接收数据。在应用程序中,我有一个按钮和几个视图。当我按下按钮时,数据(两个字符)将被发送。发送的数据将显示在两个tekst视图中

我对两个整数做了同样的处理,现在我想对字节和字符做同样的处理,但失败了

logcat给出以下错误: 10-28 09:27:19.338:E/AndroidRuntime(13138):android.content.res.Resources$NotFoundException:字符串资源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函数,它可以工作!我尝试对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
as
String
like
String.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
as
String
like
String.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(?)。我已经更新了我的代码。你能吗