使用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。
 
                    