1

マップオブジェクトがあるクラスがあります。このマップオブジェクトをカスタムダイアログに送信します。その後、このダイアログから別のダイアログを呼び出したいのですが、2番目のダイアログが表示されていません。どこが間違っているのかわかりません。

アクティビティ :

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[]

2番目のカスタムダイアログ:

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スレッドのビューを操作できます。

このメソッドを終了すると、doInBackground()が呼び出され、ここでバックグラウンド操作を開始できます。このメソッドはUIスレッドでは機能しないため、アプリケーションをブロックしていません。

これonPostExecute()が呼び出された後、計算結果を使用できます。

私の問題は、バックグラウンド操作が行われている間、進行状況インジケーターを正しく表示することでした。onProgressUpdate()これは、バックグラウンド計算が行われている間に、UIスレッドで機能しているメソッドを利用することで実行できます。

于 2012-10-11T11:58:39.577 に答える