Android ProgressDialog与Soap方法
在这里,我试图在调用Soap服务时Android ProgressDialog与Soap方法,android,Android,在这里,我试图在调用Soap服务时显示progressbar,并在来自服务的响应时关闭progressbar,但progressbar不显示。它直接提交数据,当我尝试强制应用时,它崩溃了 我想在soap方法启动后立即显示进度条,并在结束后关闭 请告诉我该怎么办 protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedIns
显示progressbar,并在来自服务的响应时关闭progressbar,但progressbar不显示
。它直接提交数据,当我尝试强制应用时,它崩溃了
我想在soap方法启动后立即显示进度条,并在结束后关闭
请告诉我该怎么办
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.register);
Button btnEnter = (Button) findViewById(R.id.btRegister);
btnEnter.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
if (Name.equals("")) {
textValidation.setText("Please Enter Your Name.");
} else if (Number.equals("")) {
textValidation.setText("Please Enter Your Contact Number.");
} else {
textValidation.setText("");
ProgressDialog dialog = ProgressDialog.show(Register.this,
"", "Loading. Please wait...", true);
request = new SoapObject(NAMESPACE, METHOD_NAME);
name = new PropertyInfo();
name.setName("Name");
name.setValue(Name);
name.setType(String.class);
request.addProperty(name);
number = new PropertyInfo();
number.setName("Number");
number.setValue(Number);
number.setType(String.class);
request.addProperty(number);
SoapSerializationEnvelope envp = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envp.dotNet = true;
envp.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(
URL);
try {
androidHttpTransport.call(SOAP_ACTION, envp);
SoapPrimitive response = (SoapPrimitive) envp
.getResponse();
Response = response.toString();
if (Response.equals("Success")) {
etName.setText("");
etEmail.setText("");
etNumber.setText("");
imageView.setTag("");
CookieManager cm = CookieManager.getInstance();
cm.setAcceptCookie(true);
cm.setCookie("http://192.168.2.9",
"MytestbuddyApp=" + Course);
CookieSyncManager.getInstance().sync();
Intent openStartingPoint = new Intent(
"com.MobileWeb.mytestbuddy.Main");
startActivity(openStartingPoint);
} else {
textValidation.setText("Something is Wrong.");
}
} catch (Exception e) {
textValidation.setText(e.toString());
}
dialog.dismiss();
}
}
});
使用AsyncTask使其工作
public class CallWebServiceAsyncTask extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
//here show your progressdialog
ProgressDialog dialog = ProgressDialog.show(Register.this,
"", "Loading. Please wait...", true);
}
@Override
protected void onPostExecute(Void result1) {
//here dismiss the progressdialog
dialog.dismiss();
}
@Override
protected Void doInBackground(Void... arg0) {
//make your servcie request here
}
}
公共类CallWebServiceAsyncTask扩展异步任务{
@凌驾
受保护的void onPreExecute(){
//这里显示您的进度对话框
ProgressDialog=ProgressDialog.show(Register.this,
“”和“正在加载。请稍候…”,为true);
}
@凌驾
受保护的void onPostExecute(void result1){
//这里关闭progressdialog
dialog.dismise();
}
@凌驾
受保护的Void doInBackground(Void…arg0){
//在这里提出您的服务请求
}
}
在onPreExecute()中为soap请求显示进度对话框使用asynctask在doInBackground()中生成soap请求在onPostExecute()中取消对话框并在响应时更新UI,应用程序崩溃。。。该怎么办?嘿,我已经把cookiemanager部件和新的活动代码放在onPostExecute中,并解决了它…:)