Mar*_*raj 3 java multithreading android android-edittext
我在修改由线程启动的另一个函数中的EditText时遇到问题:
Thread thRead = new Thread( new Runnable(){
public void run(){
EditText _txtArea = (EditText) findViewById(R.id.txtArea);
startReading(_txtArea);
}
});
Run Code Online (Sandbox Code Playgroud)
我的功能如下:
public void startReading(EditText _txtArea){
_txtArea.setText("Changed");
}
Run Code Online (Sandbox Code Playgroud)
在尝试修改edittext时,它总是强制关闭.有人知道为什么吗?
不应从非UI线程修改UI视图.可触摸的UI视图的唯一线索是"主"或"UI"线程调用的一个onCreate(),onStop()和其他类似的组件生命周期功能.
因此,每当您的应用程序尝试从非UI线程修改UI视图时,Android会抛出一个早期异常,以警告您不允许这样做.这是因为UI不是线程安全的,这样的早期警告实际上是一个很棒的功能.
更新:
您可以使用Activity.runOnUiThread()更新UI.或者使用AsyncTask.但是,在您的情况下,您需要不断从蓝牙读取数据,AsyncTask不应使用.
这是一个例子runOnUiThread():
runOnUiThread(new Runnable() {
@Override
public void run() {
//this will run on UI thread, so its safe to modify UI views.
_txtArea.setText("Changed");
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8639 次 |
| 最近记录: |