2013-03-05 5 views
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 выглядит следующим образом:

Д/EthernetActivity (15721): открытая УСПЕХ

Д/EthernetActivity (15721): статус: -1

Д/EthernetActivity (15721): байты: нулевые

, так что мне кажется, что проблема заключается в «str_non_final = new String (байты,« UTF-8 »);». Что не так с этим?

+1

пожалуйста также разместить StackTrace крушения от LogCat. – Thrakbad

+0

@ user2115240 добавьте LogCat –

ответ

1

в этом заявлении

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

вы используете байт и который является недействительным, как напечатано в вашем LogCat. поэтому он будет бросать NullPointerException, и ваш улов способен обрабатывать только UnsupportedEncodingException.

убедитесь, что bytes должен не нуль перед вызовом

write_to_screen(bytes); 
Смежные вопросы