在非 activity class 中使用 ProgressDialog

Use ProgressDialog in a non activity class

我在 activity 中使用从非 Activity Class 调用的 ProgressDialog。 它抛出一个错误。以下是我尝试使用无法实现的 ProgressDialog 的两个 class。

MainActivity.java

public class LoginPage extends Activity {


LoginH appLogin;    
Context context;

@Override
protected void onCreate(Bundle savedInstanceState) {        
    super.onCreate(savedInstanceState);
    setContentView(R.layout.login);

    Button  loginButton = (Button) findViewById(R.id.bLogin);       
    context = LoginPage.this;

    loginButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
        sDefault =  defaultText.getText().toString();

        appLogin = new LoginH(context);
        appLogin.execute(sDefault);         
        }
    });
}   
}

LoginH.java

public class LoginH extends AsyncTask<String, Void, String> {

String urlLogin;
private Context context;

public LoginHmg(Context context){
    this.context = context;
}

ProgressDialog prg = new ProgressDialog(context);   
@Override
protected String doInBackground(String... params) { 

    urlLogin ="xxx"
    WebServiceT wLoginApp = new WebServiceT();
    return wLoginApp.getMethod(urlLogin);
}   

@Override
protected void onPreExecute() {     
    super.onPreExecute();       
    prg.show();
    prg.setMessage("Loading...");
    prg.setCancelable(false);       
}
}

onPreExecute

中初始化ProgressDialog
@Override
protected void onPreExecute() {
    super.onPreExecute();
    prg = new ProgressDialog(context);
    prg.show();
    prg.setMessage("Loading...");
    prg.setCancelable(false);
}

将 ProgressDialog 的初始化移到构造函数中。上下文在当前初始化点可能为空。