不在 snackbar 中可视化 byte[]
Not visualizing byte[] in snackbar
我正在使用 USB 从 android 应用程序向 arduino 发送和接收数据。我从 Arduino 收到的数据是 byte[]
形式:
UsbSerialInterface.UsbReadCallback mCallback = new UsbSerialInterface.UsbReadCallback() { //Defining a Callback which triggers whenever data is read.
@Override
public void onReceivedData(byte[] arg0) {
String data = null;
try {
data = new String(arg0, "UTF-8");
displaySnackbar(data);
data.concat("/n");
tvAppend(textView, data);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
};
我可以使用 tvAppend 方法将接收到的所有数据放入 TextView
中:
private void tvAppend(TextView tv, CharSequence text) {
final TextView ftv = tv;
final CharSequence ftext = text;
runOnUiThread(new Runnable() {
@Override
public void run() {
ftv.append(ftext);
}
});
}
但是我无法在 Snackbar
...
上显示数据
public void displaySnackbar(CharSequence data){
View parentLayout = findViewById(R.id.activity_usb);
data="hola "+data.toString()+ " end";
Snackbar.make(parentLayout, data, Snackbar.LENGTH_LONG)
.setAction("Action", null)
.show();
我如何转换数据变量以便能够用快餐栏显示它?
我觉得我错过了什么,但我不知道是什么...提前致谢!
答案与变量本身无关!问题与接收的数据量有关。我实现的解决方案使用了 StringBuffer,它允许正确显示字符串!:
private StringBuffer buffer = new StringBuffer();
public void displaySnackbar(CharSequence text){
final CharSequence ftext = text;
View parentLayout = findViewById(R.id.activity_usb);
buffer.append(ftext);
Snackbar.make(parentLayout, buffer, Snackbar.LENGTH_LONG)
.setAction("Action", null)
.show();
我正在使用 USB 从 android 应用程序向 arduino 发送和接收数据。我从 Arduino 收到的数据是 byte[]
形式:
UsbSerialInterface.UsbReadCallback mCallback = new UsbSerialInterface.UsbReadCallback() { //Defining a Callback which triggers whenever data is read.
@Override
public void onReceivedData(byte[] arg0) {
String data = null;
try {
data = new String(arg0, "UTF-8");
displaySnackbar(data);
data.concat("/n");
tvAppend(textView, data);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
};
我可以使用 tvAppend 方法将接收到的所有数据放入 TextView
中:
private void tvAppend(TextView tv, CharSequence text) {
final TextView ftv = tv;
final CharSequence ftext = text;
runOnUiThread(new Runnable() {
@Override
public void run() {
ftv.append(ftext);
}
});
}
但是我无法在 Snackbar
...
public void displaySnackbar(CharSequence data){
View parentLayout = findViewById(R.id.activity_usb);
data="hola "+data.toString()+ " end";
Snackbar.make(parentLayout, data, Snackbar.LENGTH_LONG)
.setAction("Action", null)
.show();
我如何转换数据变量以便能够用快餐栏显示它?
我觉得我错过了什么,但我不知道是什么...提前致谢!
答案与变量本身无关!问题与接收的数据量有关。我实现的解决方案使用了 StringBuffer,它允许正确显示字符串!:
private StringBuffer buffer = new StringBuffer();
public void displaySnackbar(CharSequence text){
final CharSequence ftext = text;
View parentLayout = findViewById(R.id.activity_usb);
buffer.append(ftext);
Snackbar.make(parentLayout, buffer, Snackbar.LENGTH_LONG)
.setAction("Action", null)
.show();