在非活动类中使用ProgressDialog

时间:2015-02-05 07:54:05

标签: android android-activity android-dialog android-progressbar

我在我的活动中使用ProgressDialog,该活动是从非活动类调用的。 它抛出一个错误。以下是我试图使用它无法实现的ProgressDialog的两个类。

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);       
}
}

2 个答案:

答案 0 :(得分:1)

初始化ProgressDialog

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

答案 1 :(得分:1)

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