0

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 です。

私の問題は私にとって非論理的です。ご意見をお聞かせください。

すべての回答に感謝します

4

2 に答える 2