我正在尝试从非 UI 线程在 onUtteranceCompleted() 中创建一个对话框:
runOnUiThread(
new Thread(new Runnable() {
public void run() { MyDialog.Prompt(this); }
}).start());
Prompt() 是 MyDialog 类的一个简单的静态方法:
static public void Prompt(Activity activity) {
MyDialog myDialog = new MyDialog();
myDialog.showAlert("Alert", activity);
}
问题是我尝试执行的操作遇到了两个错误:
- 方法 runOnUiThread(Runnable) 在 Activity 类型中不是 适用于参数(无效)
- Prompt(Activity) 中的方法 类型 MyDialog 不适用 对于参数 (new Runnable(){})
我想要的只是通过将对话框创建推迟到 UI 线程来“做正确的事”,但我似乎遗漏了一些基本的东西。
我缺少什么以及如何完成我想要完成的看似简单的任务?
最佳答案
必须是:
runOnUiThread(new Runnable() {
public void run() { MyDialog.Prompt(NameOfYourActivity.this); }
});
它说 不适用于参数 (void) 因为您正在尝试使用 start 方法(这是一个 void 方法)运行线程。 runOnUiThread
收到一个可运行的对象,您不必担心启动它,这是由操作系统为您完成的。
关于第二个错误,它的发生是因为在该范围内 this
指的是您正在初始化的 Runnable
对象,而不是对 Activity 的引用。因此,您必须明确说明您指的是什么 this
(在本例中为 YourActivityName.this
)。
关于android - Activity 类型中的方法 runOnUiThread(Runnable) 不适用于参数 (void),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5494673/