gpt4 book ai didi

java - 更改 Activity 中的 View

转载 作者:行者123 更新时间:2023-12-01 15:39:39 24 4
gpt4 key购买 nike

我有一个 Activity 设置自定义创建的 View “onCreated”,并启动一个线程,该线程每 23 毫秒循环一次并“无效”该 View ,因此几乎总是调用 onDraw。

此 View 将在屏幕中继续显示,直到用户单击它(onTouchEvent)并且 View 执行一些处理,并且准备好后启用公共(public)标志,以便 Activity “知道” View 何时被激活并在此时进行处理该 Activity 应该将其 View 更改为另一个自定义创建的 View ,问题是因为标志检查是在线程的 run 方法中完成的,所以该 Activity 发送一个“CallFromWrongThreadException”,这是因为据我了解,“更改”是在另一个线程(不是 UI)中。

我已将 runOnUiThread 设置为忽略此设置,并且 srceen 完全变黑。

此外,我尝试将 Activity 设置为框架布局,其中我在请求时添加两个 View ,并且线程更改 View 的可见性,但完全没有成功。

最佳答案

所有 View 操作都必须发生在 UI 线程上。有几种方法可以做到这一点。一是使用AsyncTask执行后台工作,因为它可以在后台工作完成后在 UI 线程上运行代码。

另一种选择是发布您想要通过 View 本身运行的代码,如下所示:

mMyView.post(new Runnable() {
public void run() {
mMyView.doSomething();
}
});

此方法非常适合切换现有 View 的可见性。

这是对这些方法的很好的概述:http://android-developers.blogspot.com/2009/05/painless-threading.html

关于java - 更改 Activity 中的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8275500/

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