gpt4 book ai didi

java - Android线程修改EditText

转载 作者:太空宇宙 更新时间:2023-11-03 11:53:03 26 4
gpt4 key购买 nike

我在由线程启动的另一个函数中修改 EditText 时遇到问题:

Thread thRead = new Thread( new Runnable(){
public void run(){
EditText _txtArea = (EditText) findViewById(R.id.txtArea);
startReading(_txtArea);
}
});

我的函数如下:

public void startReading(EditText _txtArea){
_txtArea.setText("Changed");
}

它总是在尝试修改编辑文本时强制关闭。有人知道为什么吗?

最佳答案

不应从非 UI 线程修改 UI View 。唯一可以接触 UI View 的线程是“主”或“UI”线程,即调用 onCreate()onStop() 和其他类似组件生命周期函数的线程.

因此,无论何时您的应用程序试图从非 UI 线程修改 UI View ,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");
}
});

关于java - Android线程修改EditText,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7028185/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com