无法在 MediaPipe addPacketCallback 中设置 EditText 的文本
cant setText of EditText inside MediaPipe addPacketCallback
我在 Android 中使用 MediaPipe
从图形中获取输出,并将该输出设置为 EditText
的文本。以下是代码:
editText.setText("hello world".toString());
processor.addPacketCallback(
OUTPUT_STREAM_NAME,
(packet) -> {
String output = PacketGetter.getString(packet);
editText.setText("hello world 1".toString());
//editText.setText(output.toString());
Log.d(TAG,"[TS:" + packet.getTimestamp() + " : " + ouput);
});
回调外部的 setText()
工作正常,但回调内部从未设置,每当我尝试 select 时,EditText
会发生以下异常:
java.lang.IndexOutOfBoundsException: setSpan (-1 ... -1) starts before 0
所以,结果是 addPacketCallback()
在工作线程上调用,并且在那里更改 UI 需要在 UI 线程[=12= 上显式 运行 它]
editText.setText("hello world".toString());
processor.addPacketCallback(
OUTPUT_STREAM_NAME,
(packet) -> {
String output = PacketGetter.getString(packet);
runOnUiThread(new Runnable() {
@Override
public void run() {
editText.setText("hello world 1");
}
});
//editText.setText(output.toString());
Log.d(TAG, "[TS:" + packet.getTimestamp() + " : " + ouput);
});
我在 Android 中使用 MediaPipe
从图形中获取输出,并将该输出设置为 EditText
的文本。以下是代码:
editText.setText("hello world".toString());
processor.addPacketCallback(
OUTPUT_STREAM_NAME,
(packet) -> {
String output = PacketGetter.getString(packet);
editText.setText("hello world 1".toString());
//editText.setText(output.toString());
Log.d(TAG,"[TS:" + packet.getTimestamp() + " : " + ouput);
});
回调外部的 setText()
工作正常,但回调内部从未设置,每当我尝试 select 时,EditText
会发生以下异常:
java.lang.IndexOutOfBoundsException: setSpan (-1 ... -1) starts before 0
所以,结果是 addPacketCallback()
在工作线程上调用,并且在那里更改 UI 需要在 UI 线程[=12= 上显式 运行 它]
editText.setText("hello world".toString());
processor.addPacketCallback(
OUTPUT_STREAM_NAME,
(packet) -> {
String output = PacketGetter.getString(packet);
runOnUiThread(new Runnable() {
@Override
public void run() {
editText.setText("hello world 1");
}
});
//editText.setText(output.toString());
Log.d(TAG, "[TS:" + packet.getTimestamp() + " : " + ouput);
});