Java 在活动中更改视图

Java 在活动中更改视图,java,android,android-layout,Java,Android,Android Layout,我有一个活动,它将自定义创建的视图设置为“onCreated”,并启动一个线程,该线程每23毫秒循环一次,并使该视图“无效”,因此它的onDraw几乎总是被调用 此视图在屏幕上继续显示,直到用户单击它(onTouchEvent),视图执行一些过程,准备就绪时,启用公共标志ins,以便活动“知道”视图何时被激活并已执行过程,此时活动应将其视图更改为另一个自定义创建的视图,问题在于,因为标记检查是在线程的run方法中完成的,所以活动会发送一个“callfromErrorThreadException

我有一个活动,它将自定义创建的视图设置为“onCreated”,并启动一个线程,该线程每23毫秒循环一次,并使该视图“无效”,因此它的onDraw几乎总是被调用

此视图在屏幕上继续显示,直到用户单击它(onTouchEvent),视图执行一些过程,准备就绪时,启用公共标志ins,以便活动“知道”视图何时被激活并已执行过程,此时活动应将其视图更改为另一个自定义创建的视图,问题在于,因为标记检查是在线程的run方法中完成的,所以活动会发送一个“callfromErrorThreadException”,这是因为据我所知,“changing”在另一个线程(而不是UI)中

我已经将跑道设置为跨过这条路,而这条路完全变黑了


此外,我还尝试将活动设置为framelayout,其中我在begging时添加了两个视图,线程更改了视图的可见性,但没有成功。

所有视图操作都必须在UI线程上进行。有几种方法可以做到这一点。一种是用于执行后台工作,因为它意味着在后台工作完成后在UI线程上运行代码

另一个选项是发布要在视图本身中运行的代码,如下所示:

mMyView.post(new Runnable() {
    public void run() {
        mMyView.doSomething();
    }
});
此方法适用于切换现有视图的可见性

这是对这些方法的一个很好的概述:

可以mMyView.doSomething();是否为mMyView.setVisibility(视图不可见)?这可能非常有用:D