0

我在显示 ProgressDialog 时遇到了一些问题。我有一种从网站上抓取信息的方法,我想向用户显示某种“正在加载”窗口,而不是让应用程序看起来像是在工作时挂了一两秒钟。

当我不实现 ProgressDialog & Thread 时,一切正常,但是一旦我尝试实现 Thread 来完成繁重的工作,AboutMe 视图窗口就为空。

我有一个带有注册 OnClickListener 的 TextView 的 MainActivity。

单击 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();
    }
};   

我显然错过了一些微不足道的事情,但我已经尝试了谷歌几乎所有我能想到的东西,但仍然无法让 Thread 与 ProgressDialog 一起为我工作。

4

2 回答 2

0

请在调用 super.onCreate(savedInstanceState) 后调用 getAboutMe() 方法;

于 2011-12-12T09:53:12.727 回答
0

请使用 run on ui 线程方法而不是 handler.sendEmptyMessage(0); 使用此代码并删除句柄消息

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

老兄让我知道这是否成功,它大部分时间都有效

于 2011-12-12T10:44:05.837 回答