Что не так с этим кодом? - PullRequest
0 голосов
/ 25 октября 2010

Извините, что задаю такой вопрос, но я пытаюсь заставить его работать часами, и я не вижу ошибки ...

public class Main extends ListActivity {
/** Called when the activity is first created. */

ProgressDialog dialog;

@Override
public synchronized void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);     
    new WebLoader().doInBackground("http://sample.sample.com/sample.xml");
}

public class WebLoader extends AsyncTask<String, Void, String> {

    @Override
    protected String doInBackground(String... params) {
        String result = "";

        try{
            URL url = new URL(params[0]);
            URLConnection conn = url.openConnection();
            InputStream is = conn.getInputStream();
            BufferedInputStream bis = new BufferedInputStream(is);
            ByteArrayBuffer baf = new ByteArrayBuffer(2048);

            int current = 0;
            while((current = bis.read()) != -1)
            {
                baf.append((byte)current);
            }

            result = new String(baf.toByteArray());
        }

        catch(Exception e)
        {
            Log.e("gullinews", e.getMessage());
        }


        return result;
    }

    @Override
    protected void onPostExecute(String result) {
        dialog.dismiss();
    }

    @Override
    protected void onPreExecute() {
        dialog = ProgressDialog.show(getApplicationContext(), "", 
                "Loading. Please wait...", true);
    }     
  }

}

Запуск с отладчиком показывает, что данные XML загружены, но есть только черный экран. Когда я попробовал "setContenView (R.layout.main);" с main.xml:

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <ListView android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:id="@android:id/list" />
</LinearLayout>

// Изменить: хорошо, я решил одну ошибку, остальное не решил. Источник обновлен.

Моя главная проблема сейчас в том, что у меня нет идеи, почему ProgressDialog не появляется. остальное должно быть черным, это верно.

1 Ответ

0 голосов
/ 29 октября 2010

new WebLoader().doInBackground("http://sample.sample.com/sample.xml");

Это не то, как вы используете asynctask. Вы вообще читали какой-либо документ?

...