Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android中启动新活动之前,如何在onClickListener中处理UI更改?_Android_User Interface_Listener_Ui Thread - Fatal编程技术网

在Android中启动新活动之前,如何在onClickListener中处理UI更改?

在Android中启动新活动之前,如何在onClickListener中处理UI更改?,android,user-interface,listener,ui-thread,Android,User Interface,Listener,Ui Thread,我一直在这个论坛上搜索,但我找不到我的问题的任何答案。我有以下问题: 我有一个imageview和两个文本,我想在加载下一个活动之前更改所选内容的颜色以显示视觉反馈 @Override public void onClick(View v) { openFormOverviewButton.setColorFilter(0x22FFFFFF, Mode.SRC_ATOP); openFormOverviewTitle.setTextColor(0xFF00851B); open

我一直在这个论坛上搜索,但我找不到我的问题的任何答案。我有以下问题:

我有一个imageview和两个文本,我想在加载下一个活动之前更改所选内容的颜色以显示视觉反馈

@Override
public void onClick(View v) {
   openFormOverviewButton.setColorFilter(0x22FFFFFF, Mode.SRC_ATOP);
   openFormOverviewTitle.setTextColor(0xFF00851B);
   openFormOverviewText.setTextColor(0xFF00851B);
   Intent tki = new Intent();
   tki.setClass(getApplication(), DataCollectorFormOverviewActivity.class);
   startActivity(tki);
}
我希望更改按钮和文本,然后开始新的活动。但是,文本不会更改,活动开始。如果我在UI线程上的runnable中调用三行(runOnUiThread(new runnable(){…}),那么在活动启动之前应用更改。这实际上很奇怪,因为在主线程aka.UI线程上调用了onClick方法

这是否意味着对UI线程的更改不会立即在UI线程上执行?还是我做了一些完全错误的事情

最好的,
Adam

正确。对UI元素的更改不会立即执行。它们会在下一次UI循环运行时执行,也就是在您释放控件之后。这就是为什么您不能在UI线程上执行昂贵的操作。

感谢您的回答。只是为了进一步澄清:所以当我在UI线程上放置Runnable时(RunNuithRead)然后它将作为自己的循环放到线程上,并在这个循环之前执行?我真的很想理解它…干杯!