Android ProgressDialog不';我没有出现。阿盖恩
我很困惑,因为这在其他活动中对我来说效果很好,这里我基本上只是复制粘贴了代码,但是ProgressDialog没有出现。代码如下:Android ProgressDialog不';我没有出现。阿盖恩,android,progressdialog,Android,Progressdialog,我很困惑,因为这在其他活动中对我来说效果很好,这里我基本上只是复制粘贴了代码,但是ProgressDialog没有出现。代码如下: public class MyListActivity extends ListActivity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setCont
public class MyListActivity extends ListActivity {
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.mylayout);
final ProgressDialog progress = new ProgressDialog(this);
progress.setProgressStyle(STYLE_SPINNER);
progress.setIndeterminate(true);
progress.setMessage("Working...");
progress.show();
Thread thread = new Thread()
{
public void run()
{
//long operation populating the listactivity
progress.dismiss();
}
};
thread.run();
}
}
不确定这是否是问题的根本原因,但请尝试执行thread.start()而不是thread.run()。执行start()实际上会启动一个新线程,可能会给进度对话框一个显示的机会 您应该使用来管理长期操作
private class LongOperation extends AsyncTask<HttpResponse, Integer, SomeReturnObject>
{
ProgressDialog pd;
long totalSize;
@Override
protected void onPreExecute()
{
pd = new ProgressDialog(this);
pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
pd.setMessage("Please wait...");
pd.setCancelable(false);
pd.show();
}
@Override
protected SomeReturnObject doInBackground(HttpResponse... arg0)
{
// Do long running operation here
}
@Override
protected void onProgressUpdate(Integer... progress)
{
// If you have a long running process that has a progress
pd.setProgress((int) (progress[0]));
}
@Override
protected void onPostExecute(SomeReturnObject o)
{
pd.dismiss();
}
}
私有类LongOperation扩展了异步任务
{
进展性帕金森病;
总尺寸长;
@凌驾
受保护的void onPreExecute()
{
pd=新进度对话框(本);
pd.setProgressStyle(ProgressDialog.STYLE_水平);
设置消息(“请稍候…”);
pd.可设置可取消(假);
pd.show();
}
@凌驾
受保护的SomeReturnObject doInBackground(HttpResponse…arg0)
{
//在这里进行长时间运行操作
}
@凌驾
受保护的void onProgressUpdate(整数…进度)
{
//如果您有一个长时间运行的进程,并且该进程有一定的进展
pd.setProgress((int)(progress[0]);
}
@凌驾
PostExecute上受保护的void(SomeReturnObject o)
{
pd.解散();
}
}
从上面的代码中,它实际上是在Thread run()方法中显示对话框并立即关闭它。如果你真的想看看它是否显示了Thread.sleep(2000)来测试,但是John Russell说的是使用AsyncTask的方法