2011-11-01 61 views
0

我与此堆栈,我试图使用TabLayout创建应用程序。我有3个选项卡(3个不同的活动)。我也有服务,读取我的GPS位置 - 工作正常。我得到了发布到Web服务器用户位置的线程 - 适用于。Android:如何从线程显示自定义对话框

现在我试图创建线程,询问Web服务器,如果有任何消息的用户。如果有 - 线程尝试显示自定义对话框(2文本视图和画廊 - 它的工作原理,如果我通过点击按钮从活动开始的行动),并有问题开始我知道我不能更新UI线程不同于主线程,但我不知道如何解决这个问题。我试图使用AsyncTask - 失败 - 我不想将AsyncTask分配给特定的Activity作为内部私有类。

我希望我可以显示我的自定义对话框,无论用户当前正在使用哪个选项卡。

线程工作正常,但如何显示该对话框。

我读了关于runOnUIThread,但不知道如何使用它。

任何想法,任何类似的例子??

+0

下一个问题。如果我在一个Activity“A”中启动线程,并将Tab和其他活动“B”更改为顶层,并且Activity“A”的处理程序接收msg以更新UI,会发生什么情况。 –

回答

0

使用runOnUiThread很简单。

YourActivity.this.runOnUiThread(new Runnable() { 
    public void run() { 
     YourActivity.this.showDialog(CUSTOM_DIALOG_ID); 
    } 
} 
+0

不可以在范围 –

+0

中访问MyActivity类型的封闭实例。哦,这段代码应该已经发布到活动类的内部线程类中。如果你可以得到你的活动的参考,只需把它给线程。 – Jong

0
+0

所以我需要在我的主题中使用处理程序,并在每个活动中使用处理程序? –

+0

不,请使用AsyncTasks通知每个活动中定义的处理程序。 http://developer.android.com/resources/articles/painless-threading.html – James

+0

如果我在每个Activity中创建Handler,我的处理Th​​read的Handler会知道谁发送msg来更新UI。 –

相关问题