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 < 10; i++ ){と書くと、動作します
readData() にfor( i = 0; i < 11; i++ ){と書くと、クラッシュします
この状況では int available = 13 です。
私の問題は私にとって非論理的です。ご意見をお聞かせください。
すべての回答に感謝します