【发布时间】:2013-09-05 08:45:30
【问题描述】:
我对 setText(TextView) 有疑问。
view = EgridView.getChildAt( iterator );
parameter = (TextView) view.findViewById( R.id.gridItemParameter );
if( modbus.readAvailable() > 0 ){
if( !((data = modbus.readData()).equals("")) ){
Log.i("-------------TEST-----------", data); // <-------- wrok
//Toast.makeText(getApplicationContext(), data , Toast.LENGTH_LONG).show(); <----- work
// parameter.setText( "test" ); <----------- work
parameter.setText( data ); // <--------- crash
}
}
为什么要**parameter.setText(data); **让我的应用崩溃?
更多代码:
public int readAvailable(){
try{
return inStream.available();
} catch( Exception e ){
return 0;
}
}
public String readData(){
try{
if( isConnected == true && socket.isConnected() && inStream != null ){
int i;
int oneByte;
byte byteArray[] = new byte[ 100 ];
int available = inStream.available();
String data = "";
if( available > 0 ){
inStream.read( byteArray );
for( i = 0; i < available; i++ ){
oneByte = byteArray[ i ] & 0xff;
data = data.concat( Integer.toString( oneByte ) + " " );
}
return data; // <-----
} else {
return "";
}
} else {
errorText = "no communication";
return "";
}
} catch( Exception e ){
errorText = e.getMessage();
return "";
}
}
如果在 readData() 我写 return "test"; 然后工作
如果在 readData() 我写 return byteArray.toString(); 然后工作
如果在 readData() 我写 for( i = 0; i 然后工作
如果在 readData() 我写 for( i = 0; i 然后 崩溃
int available = 13 在这种情况下。
我的问题对我来说是不合逻辑的。请指教。
感谢所有回答
【问题讨论】:
-
我认为这是一个错字,但
arameter = (TextView) view.findViewById( R.id.gridItemParameter );的名称缺少 p,就像在parameter中一样 -
你可以试试 parameter.setText(String.valueOf(data));我不确定,但可能会起作用。我假设“参数”对象不为空。
-
你能粘贴你得到的错误吗?
-
paste2.org/vJ5fOPvO - 错误。但它不为空 - Toast.makeText 工作良好。当然它是参数而不是参数 - 对不起。 String.valueOf(data) - 不工作
标签: android crash stream textview settext