2011-11-01 42 views
1

我的应用程序中有一个小问题AlertDialogs。所以这里是我的情况:Android从非活动创建AlertDialog

我有一个Synchronization Acitivity哪一个是通过HttpURLConnection连接到一个web服务,并从不同的类解析它的结果。所以如果服务器的响应是某种错误,我有一个RPCErrorPacket这将处理,但它不是一个活动。整个响应的解析是在一个单独的thread中完成的,我需要找到一种方法来从RPCErrorPacket创建一个AlertDialog,它将显示在Synchronization Activity中。

任何想法,如果有可能,或者我该如何实现这样的事情?

+0

你用AsyncTask打web服务吗 – Karthi

+0

用这个'Context'做这个 –

回答

1

这里是我正在做这个:

cancelDialog.dismiss(); // cancel the dialog which is already opened 
Looper.prepare(); // preparing the looper 
this.createDialog("Check your network settings!"); // creating the dialog with method 
Looper.loop(); // loop 
Looper.myLooper().quit(); // quit looper 
Synchronization.this.finish(); // finish activity 
1

如果我记得正确的话,让服务或其他后台任务调用用户无法避免的东西被认为是不好的做法。所以我建议你考虑改用notification。在那里,你可以轻松地声明,如果用户点击它会发生什么。

如果您的线程实际上是您的活动的工作人员,则应该使用Android提供的其中一种方法在后台执行异步内容,例如,一个AsyncTask

0

runOnUiThread(新的可运行{ 的run(){ // 这里做需要的东西,如果需要通过活动情境 });

runOnUIThread是从非UI线程在UI线程上运行可运行的方法。

0

这是不好的做法,但你可以节省您的活动的一个静态实例在其构造,那么就传递上下文从实例到UI线程alertdailog ofcourse runOnUiThread(new runnable ....)