1

以下はXmlAdaptersのサンプルコードです。以下に示すようにProgressDialogを追加すると、エラーが発生します'Adapters型のメソッドloadCursorAdapter(Context、int、String、Object ...)は、引数(new AsyncTask(){}、int、String)には適用されません'

       final ProgressDialog _progressDialog = new ProgressDialog(this);
            _progressDialog.setTitle("Loading ...");
            _progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);

            new AsyncTask<Void, Void, Void>() {
             protected Void doInBackground(Void ... urls) {
             setContentView(R.layout.photos_list);
             setListAdapter(Adapters.loadCursorAdapter(this, R.xml.photos,
            "content://xmldocument/?url=" + Uri.encode("http://picasaweb.google.com/data/feed/api/featured?max-results=50&thumbsize=144c")));
             }

             protected void onPostExecute(Void result) {
                 _progressDialog.dismiss();
             }

             protected void onPreExecute(Void no) {
                 _progressDialog.show();
             }

            }.execute();
4

1 に答える 1

0

'Adapters型のメソッドloadCursorAdapter(Context、int、String、Object ...)は、引数(new AsyncTask(){}、int、String)には適用できません。'

loadCursorAdapterは、AsyncTaskではなくアプリケーションまたはアクティビティコンテキストを最初のパラメーターとして使用することを意味するため、コードを次のように変更します。

new AsyncTask<Void, Void, Void>() {
      protected Void doInBackground(Void ... urls) {
         setContentView(R.layout.photos_list);
         setListAdapter(Adapters.loadCursorAdapter(Your_Current_Activity.this,
           R.xml.photos,
            "content://xmldocument/?url=" + Uri.encode("http://picasaweb.google.com/data/feed/api/featured?max-results=50&thumbsize=144c")));
                      //your code here...

また、AsyncTaskのdoInBackgroundメソッドからUi要素にアクセスしようとしているため、これが機能するかどうかはわかりませんが、バックグラウンドスレッドでは常に実行されます。

onPostExecuteバックグラウンド実行が完了した後にUiを更新する には、すべてのUi関連コードを移動する必要があります

于 2012-12-25T05:06:05.920 に答える