1

我有一个类,我有一个地图对象。我将此地图对象发送到自定义对话框。之后我想从此对话框调用另一个对话框,但第二个对话框没有显示。我不知道我在哪里做错了。

活动 :

dlgi = new MyCommunityServicesDialog(AppCentral.this, myValues, mapView);
dlgi.listDialog().show();

自定义对话框:

Community_List_Dialog dialog = new Community_List_Dialog(context, getAllCommunityNames(selectedOpt).get(0), getAllCommunityNames(selectedOpt).get(1), mapView)
dialog.showDialog();

注意:此方法 ( getAllCommunityNames(selectedOpt).get(0)/(1)) 返回String[]

自定义对话框第二:

public Dialog showDialog()
{

    Log.i("listDialog calling...", "calling...");
    final Dialog community_dialog = new Dialog(context);
    community_dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
    community_dialog.setContentView(R.layout.community_list);
    ListView community_list = (ListView)community_dialog.findViewById(R.id.community_list);

    adapter = new Community_List_Adapter(context,names);
    community_list.setAdapter(adapter);

    return community_dialog;

}
4

1 回答 1

0

这个问题的解决方案是利用类

android.os.AsyncTask<Params, Progress, Result>

JavaDoc 中给出了描述:

“AsyncTask 可以正确和轻松地使用 UI 线程。此类允许在 UI 线程上执行后台操作和发布结果,而无需操作线程和/或处理程序。”

通过使用这些方法onPreExecute(),您可以在 UI 线程上操作 View。

完成此方法后,doInBackground()将调用 并在此处开始您的后台操作。此方法不适用于 UI 线程,因此它不会阻塞您的应用程序。

onPostExecute()调用它之后,您可以使用您的计算结果。

我的问题是在进行后台操作时正确显示进度指示器。这可以通过使用onProgressUpdate()在 UI 线程上工作的方法来完成,同时进行后台计算。

于 2012-10-11T11:58:39.577 回答