进度对话框不会显示

问题描述 投票:0回答:2

我想显示此对话框,而线程试图建立连接,但是当我按下启动此方法的按钮时,该对话框将不会显示。

public void add_mpd(View view) {
    dialog = ProgressDialog.show(MainActivity.this, "", "Trying to connect...");
    new Thread(new Runnable() {
        public void run() {
            try {
                String child;
                EditText new_mpd = (EditText) findViewById(R.id.new_mpd);
                child = new_mpd.getText().toString();
                mpd = new MPD(child);
                children.get(1).add(child);

            } catch (UnknownHostException e) {
                e.printStackTrace();
            } catch (MPDConnectionException e) {
                e.printStackTrace();
            }
        }
    }
    ).start();
    adapter.notifyDataSetChanged();
    dialog.dismiss();
}
android dialog progressdialog
2个回答
2
投票

它不会显示,因为(阻塞)工作是在另一个线程中完成的。这意味着start()类的Thread方法将不会阻塞。

Ergo,您显示对话框,启动线程并且对话框立即被关闭(并因此关闭)。

dismiss()方法的末尾将呼叫置于run(),它应该可以正常工作。


以上内容可能对您有用,但您不应直接使用Thread类。周围有包装纸,使用起来更舒适。

在Android中,如果要在UI线程上进行长期工作,则应使用AsyncTask


0
投票

另外,要以卢卡斯所说的为基础,可以看一下这个例子。

AsyncTask

http://www.helloandroid.com/tutorials/using-threads-and-progressdialog

}

© www.soinside.com 2019 - 2024. All rights reserved.