データを送受信するAndroidアプリに取り組んでいます。アプリには、いくつかのテックスビューのボタンがあります。ボタンを押すと、データ(2文字)が送信されます。送信されたデータは、2 つの tekst ビューに表示されます。
私は2つの整数で同じことをしましたが、それはうまくいきました。バイトと文字で同じことをしたいのですが、それは失敗します。
logcat は次のエラーを返します: 10-28 09:27:19.338: E/AndroidRuntime(13138): android.content.res.Resources$NotFoundException: String resource ID #0x0
以下は、onClick リスナー コードです。
@Override
public void onClick(View v) {
// Control value
ArrayOutput[0] = 'B';
ArrayOutput[1] = 'B';
//Creating TextView Variable
TextView text = (TextView) findViewById(R.id.tv);
//Creating TextView Variable
TextView statustext = (TextView) findViewById(R.id.status);
//Sets the new text to TextView (runtime click event)
text.setText("You Have click the button");
// Convert string to bytes
ArrayOutput[0] = ArrayRecieved[0];
ArrayOutput[1] = ArrayRecieved[1];
final char Byte1 = (char) ArrayOutput[0];
final char Byte2 = (char) ArrayOutput[1];
final TextView Xtext = (TextView) findViewById(R.id.xtext);
final TextView Ytext = (TextView) findViewById(R.id.ytext);
Ytext.setText(Byte1);
Xtext.setText(Byte2);
try
{
statustext.setText("Sending....");
server.send(ArrayOutput);
statustext.setText("Sending succes");
}
catch (IOException e)
{
statustext.setText("Sending failed");
Log.e("microbridge", "problem sending TCP message", e);
}
}
});
問題が何であるかを誰かが推測していますか?どんな提案も大歓迎です!さらに情報を提供する必要がある場合は、そう言ってください。
アップデート
ご提案いただきありがとうございます。onclick 関数の場合は機能します。受信機能についても同じことをしようとしました。このイベント ハンドラー関数は、利用可能なデータがある場合に呼び出されます。
setText 関数を使用すると、数サイクル後に ap がクラッシュします。この関数には、3 つの settext 操作があります。最初のものだけが呼び出されます (その後、アプリがクラッシュします)。これらの操作の順序を変更しても、最初の操作のみが呼び出されます。アプリが最初の settext 操作を表示するが、クラッシュする可能性はありますか? ダミー データを使用しているため、イベント ハンドラ関数が呼び出されたときに実際に受信したデータは使用されませんが、それでも最初の操作の後でアプリがクラッシュします。誰か提案がありますか?
一方、データは毎秒送信されます。
以下は、onRecieve (イベント ハンドラー) 関数です。
@Override
public void onReceive(com.example.communicationmodulebase.Client client, byte[] data)
{
Log.e(TAG, "In handler!");
//Control value
ArrayRecieved[0] = 'C';
ArrayRecieved[1] = 'B';
if (data.length < 2){
return;
}
// Set data that has been recieved in array
//ArrayRecieved[0] = data[0];
//ArrayRecieved[1] = data[1];
char Byte1 = (char) ArrayRecieved[0] ;
char Byte2 = (char) ArrayRecieved[1] ;
TextView Xtext = (TextView) findViewById(R.id.xtext);
TextView Ytext = (TextView) findViewById(R.id.ytext);
Xtext.setText(""+Byte2);
Ytext.setText(""+Byte1);
TextView textRecvStatus = (TextView) findViewById(R.id.RecvStatusText);
textRecvStatus.setText("In handler!");
}
});