我有这段代码片段,这段代码的问题是当我点击“完成”按钮时 ProgressDialog没有显示。请帮助
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.send);
done = (Button)findViewById(R.id.sendbut);
done.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
showProgressDialog();
query_str = getString();
startUploading();
}
});
}
public void showProgressDialog(){
GlobalClass.printLine("Showing progress dialog");
progressDialog = new ProgressDialog(Send.this);
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setMessage("Sending...");
progressDialog.setCancelable(false);
progressDialog.show();
// Start lengthy operation in a background thread
new Thread(new Runnable() {
public void run() {
// Update the progress bar
mHandler.post(new Runnable() {
public void run() {
progressDialog.setProgress(mProgressStatus);
Toast.makeText(getApplicationContext(), "Herererererer",Toast.LENGTH_LONG).show();
if(mProgressStatus == 100){
Toast.makeText(getApplicationContext(), "Done",Toast.LENGTH_LONG).show();
progressDialog.dismiss();
}
}
});
}
}).start();
}
答案 0 :(得分:0)
嗨,我遇到了这个问题,这个链接帮助我解决了这个问题progressdialog tutorial
希望这有助于解决您的问题
答案 1 :(得分:0)
您是否尝试使用AsyncTask
?
以下是文档:http://developer.android.com/reference/android/os/AsyncTask.html
您可能希望用AsyncTask替换线程。
答案 2 :(得分:0)
您应该使用AsyncTask,也称为Painless threading。
现在,要在后台处理时显示进度条,下面是一个示例:
// ASync Task Begin to perform
private class performBackgroundTask extends Async Task < Void, Void, Void >
{
private ProgressDialog Dialog = new ProgressDialog( this);
protected void onPreExecute()
{
// here you have place code which you want to show in UI thread like progressbar or dialog or any layout .
Dialog.setMessage(" please wait...");
Dialog.show();
}
protected Void doInBackground(Void... params)
{
// write here the code to download or to perform any background task.
return null;
}
protected void onPostExecute(Void unused) {
Dialog.dismiss(); // here we have to dismiss the progress dialog
// To display fetched data in textview, imageview, or any
}
}
答案 3 :(得分:0)
@Hari ..
我认为你正在调用startUploading()内部的另一个函数,这就是为什么没有显示ProgressDialog的原因。尝试在XML中创建progressBar并在按钮单击内写入所有函数。如果这是一个递归函数,则更改你的逻辑,在按钮内点击它本身。
答案 4 :(得分:0)
由于您无法使用
,Paresh Mayani上面发布的答案将无效new ProgressDialog(this)
在AsyncTask中。 “这个”需要是一个上下文。