0

更新: あなたの助けを借りて、いくつかのログ入力を更新しました。

次のコードを適用しています。

@Override
public void run() {

     byte[] bytes = null;

     int TIMEOUT = 5000;

     int status = connection.bulkTransfer(ep, bytes, ep.getMaxPacketSize(), TIMEOUT);

     Log.d(TAG, "status: " + status);

     write_to_screen( bytes );

}

public void write_to_screen( byte[] bytes  ) {

    Log.d(TAG, "bytes: " + bytes);

    String str_non_final = null;

    try {

        str_non_final = new String( bytes, "UTF-8");
        Log.d(TAG, "str_non_final : " + str_non_final );

    } catch (UnsupportedEncodingException e) {

        e.printStackTrace();

    }   

    final String str = str_non_final;

    Log.d(TAG, "str: " + str);

    runOnUiThread(new Runnable() {@Override public void run()
    {
       textView7.setText( str );
       Log.d(TAG, "UI updated");
    }
    });

}   

logcat の結果は次のとおりです。

D/EthernetActivity(15721): 成功を開く

D/EthernetActivity(15721): ステータス: -1

D/EthernetActivity(15721): バイト: null

したがって、問題は「str_non_final = new String( bytes, "UTF-8");」にあるように思えます。これの何が問題なのですか?

4

1 に答える 1

1

この声明で

str_non_final = new String( bytes, "UTF-8");

あなたはバイトを使用していて、logcatに出力されているようにnullです。そのため、がスローされNullPointerException、キャッチは。のみを処理できUnsupportedEncodingExceptionます。

bytes呼び出す前にそれがnullにならないことを確認してください

write_to_screen( bytes );
于 2013-03-05T11:06:42.317 に答える