我的应用程序包含下载按钮,每当按下该按钮时,我想要显示一些进度条,以便用户知道发生了什么。我真正想要做的是,每当进度条完成时,我都想要一些Toast弹出。有人可以指导我吗?我会非常感激。提前谢谢!
以下是我正在使用的代码:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final ProgressDialog dialog = new ProgressDialog(MyActivity.this);
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
dialog.setMessage("Downloading...");
dialog.setCancelable(true);
dialog.setMax(200);
dialog.setProgress(0);
dialog.show();
Thread t = new Thread(new Runnable(){
public void run() {
while(dialog.getProgress() < dialog.getMax())
{
dialog.incrementProgressBy(1);
try{Thread.sleep(50);}catch(Exception e){/* no-op */}
}
dialog.dismiss();
}
});
t.start();
}
答案 0 :(得分:1)
AsyncTask是最简单的,但如果您坚持使用代码,可以在dialog.dismiss()语句之后添加此代码段。
runOnUiThread(new Runnable(){
public void run() {
Toast.makeText(YourClassName.this, "task finished", Toast.LENGTH_LONG).show();
}
});
这是因为Toast必须只显示在UI线程上。
答案 1 :(得分:0)
这可以在android中使用AsyncTask来完成。 这里有一些方便的链接。
http://sites.google.com/site/androidhowto/how-to-1/asynctasks-with-progressdialogs
http://www.codeproject.com/KB/android/asynctask_progressdialog.aspx
http://javatech.org/2011/02/discovering-android-opening-a-progress-dialog-with-asynctask/
http://www.softwarepassion.com/android-series-download-files-with-progress-dialog/
答案 2 :(得分:0)
在dialog.dismiss()之后;写
Toast.makeText(getApplicationContext(),"finish",Toast.LENGTH_LONG).show();
答案 3 :(得分:0)
您无法在UI线程上运行长任务。使用Async Task创建后台线程,但不能在后台线程中进行吐司。
异步任务将在任务完成时通知。
我认为异步任务有以下几种方法。
onBackground onProgressUpdate PreExecute PostExecute(在这里举杯祝酒)