使用Asynctask在Android中显示ProgressBar
来源:爱站网时间:2021-09-16编辑:网友分享
我试图显示一个ProgressBar。我是Android初学者。当我按下按钮时,任务应该在后台运行,但是它不会显示ProgressBar。怎么了我...
问题描述
我正在尝试显示进度条。
我是Android初学者。
当我按下按钮时,任务应该在后台运行,但是它不显示进度条。
是什么问题?我听不懂。
请帮助我!
MainActivity:
package com.example.shikkok_services;
import java.util.ArrayList;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity {
private Button btnThread,btntask;
private ProgressDialog pd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnThread=(Button)findViewById(R.id.btnStartThread);
btntask=(Button)findViewById(R.id.btntsk);
btntask.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
//start myTast
new MyTask(MainActivity.this).execute();
}
});
}
}
MyTask:
package com.example.shikkok_services;
import android.app.Dialog;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
public class MyTask extends AsyncTask {
Context context;
Handler handler;
Dialog dialog;
TextView txtprogrss;
ProgressBar progress;
Button btnCancel;
MyTask(Context context, Handler handler){
this.context=context;
this.handler=handler;
}
MyTask(Context context){
this.context=context;
this.handler=handler;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
// create dialog
dialog=new Dialog(context);
dialog.setCancelable(true);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.pogressdialog);
txtprogrss=(TextView) dialog.findViewById(R.id.txtProgress);
progress=(ProgressBar)dialog.findViewById(R.id.progressBar2);
btnCancel=(Button)dialog.findViewById(R.id.btnProgress);
btnCancel.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
MyTask.this.cancel(true);
}
});
}
@Override
protected Void doInBackground(Void... arg0) {
for (int i = 0; i
解决方法:
您没有在dialog.show()
的onPreExecute
方法中调用AsyncTask
。