Запустите второй Intent & View из Main Activity и отобразите ProgressDialog с потоком - PullRequest
0 голосов
/ 12 декабря 2011

У меня проблемы с отображением ProgressDialog.У меня есть метод, который удаляет информацию с веб-сайта, и я хочу показать пользователю какое-то окно «Загрузка», а не приложение, просто выглядящее так, как будто оно висит на секунду или две, когда оно работает.

Все работает нормально, когда я не реализую ProgressDialog & Thread, но как только я пытаюсь реализовать Thread для выполнения тяжелой работы, окно AboutMe View становится пустым.

У меня есть MainActivity сTextView, который регистрирует OnClickListener.

A Щелчок по TextView выполняет:

    startActivity(new Intent(getBaseContext(), AboutMe.class));

Это большая часть действия AboutMe.class:

public class AboutMe extends Activity {
private ProgressDialog aboutMeProgressDialog;
private String htmlAboutMe = "";

@Override
protected void onCreate(Bundle savedInstanceState) {
    getAboutMe(); // Get information from Internet

    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFeatureDrawableResource(Window.FEATURE_NO_TITLE, android.R.drawable.ic_dialog_alert);
    setContentView(R.layout.abutme);

    TextView tvAbout = (TextView) findViewById(R.id.aboutMe);
    tvAbout.setText(Html.fromHtml(htmlAboutMe));

}

private void getAboutMe() {
    try {
        aboutMeProgressDialog = ProgressDialog.show(AboutMe.this, "", "Loading");
        new Thread() {
            @Override
            public void run() {
                try {
                                /** Code to scape webpage **/
                }
                catch (Exception exp) {
                    exp.printStackTrace();
                }
                handler.sendEmptyMessage(0);
            }
        }.start();
    }
    catch (Exception ex) {
        ex.printStackTrace();
    }
}

private final Handler handler = new Handler() {
    @Override
    public void handleMessage(final Message msg) {
        aboutMeProgressDialog.dismiss();
    }
};   

I 'Я явно упускаю из виду что-то тривиальное, но я пытался найти в Google практически все, что только мог придумать, но все еще не могу заставить Thread вместе с ProgressDialog работать на меня.

Ответы [ 2 ]

0 голосов
/ 12 декабря 2011

пожалуйста, используйте метод run on ui thread вместо handler.sendEmptyMessage (0); используйте этот код и удалите дескриптор сообщения

               runOnUiThread(new Runnable() {
                @Override
                public void run() {
                     aboutMeProgressDialog.dismiss();
                }
            });

чувак, дайте мне знать, если это было успешно, это работает чаще всего

0 голосов
/ 12 декабря 2011

пожалуйста, вызовите метод getAboutMe () после вызова super.onCreate (saveInstanceState);

...