2015-12-21 49 views
2

while running this code I'am getting Null Pointer error!請給我解決方案。如何在webservice調用時添加進度條?

\\............ 
new LoginCheck().execute(txt_username.getText().toString(),txt_password.getText().toString()); 
.............// 

class LoginCheck extends AsyncTask<String, String, String> { 

    @Override 
    protected void onPreExecute() { 
     progressBar = (ProgressBar) findViewById(R.id.progressBar1); 
     progressBar.setVisibility(View.VISIBLE); 
     super.onPreExecute(); 

    } 
    protected String   doInBackground(String... params) { 

     String responsetring = ""; 
     try { 
      SoapObject request = new SoapObject(NAMESPACE, "Logincheck"); 
      SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
      envelope.dotNet = true; 
      envelope.setOutputSoapObject(request); 
      request.addProperty("username",params[0]); 
      request.addProperty("password",params[1]); 
      //Msg("Version"+appversion+"AppName"+Appname,Toast.LENGTH_LONG); 
      HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); 
      try { 
       androidHttpTransport.call(NAMESPACE + "Logincheck", envelope); 
      } catch (IOException | XmlPullParserException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
       Msg(e.toString(), Toast.LENGTH_LONG); 
      } 
      SoapPrimitive response; 
      try { 
       response = (SoapPrimitive) envelope.getResponse(); 
       responsetring = response.toString(); 
      // Msg(responsetring.toString(), 1); 
      } catch (SoapFault e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
       Msg(e.toString(), Toast.LENGTH_LONG); 
      } 
      String[] splitrows = responsetring.split(";"); 
      String usernamestr = ""; 
      String deviceid = ""; 
      String isanydevice = ""; 

      if (responsetring.equals("false")) { 
      //  Helper.InfoMsg("Alert", "Please Check userame and password and confirm device is valid", LoginActivity.this); 

      } else { 
       usernamestr = splitrows[0]; 
       deviceid = splitrows[1]; 
       isanydevice = splitrows[2]; 
       TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); 
       if (deviceid.equals(tm.getDeviceId().toString())) { 
        LoginActivity.this.username = usernamestr; 
        Intent intent = new Intent(LoginActivity.this, MainActivity.class); 
        startActivity(intent); 
        overridePendingTransition(R.anim.right_in, R.anim.left_out); 
       } else { 
        TelephonyManager tm1 = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); 
       //  Helper.InfoMsg("Your Device Id", (tm1.getDeviceId().toString()), LoginActivity.this); 
        txt_warning.setText((tm1.getDeviceId().toString())); 
        if (isanydevice.equalsIgnoreCase("true")) { 
         LoginActivity.this.username = usernamestr; 
         Intent intent = new Intent(LoginActivity.this, MainActivity.class); 
         startActivity(intent); 
         overridePendingTransition(R.anim.right_in, R.anim.left_out); 
        } else { 
        // Helper.warning("Sorry", "Not Allowed To Login Other devices", LoginActivity.this); 
         // return false; 
        } 
       } 

      } 
      //return true; 
     } catch (Exception e) { 
      Msg(e.toString(), 1); 
      // return false; 
     } 
     return null; 
    } 


    protected void onPostExecute(String result) { 

     progressBar.setVisibility(View.INVISIBLE); 
    } 






} 
+0

其中空指針異常? –

+0

請在android.app.Dialog上發佈您的logcat @prabhu – curiousMind

+0

java.lang.NullPointerException 。 (Dialog.java:165) at android.app.AlertDialog。 (AlertDialog.java:114) at android.app.AlertDialog。 (AlertDialog.java:110) at android.app.ProgressDialog。 (ProgressDialog.java:82) at com.scm.androscm.LoginActivity $ LoginCheck。 (LoginActivity.java:185) – prabhu

回答

0

你在的AsyncTask錯過了唯一的一點是,你已經忘了覆蓋onProgressUpdate()方法。在後臺計算仍在執行時,onProgressUpdate()方法用於在用戶界面中顯示任何形式的進度。我在這裏給出了一個示例代碼。參考它。希望它對你有幫助。

protected void onProgressUpdate(String... progress) 
{   
    progressBar.setProgress(Integer.parseInt(progress[0])); 
} 

P.S:另請參閱下面的鏈接。

http://www.coderanch.com/t/612017/Android/Mobile/AsyncTask-show-progress-bar

+0

非常感謝你爲您的支持。錯誤已被清除,我的項目正在運行! – prabhu

+0

接受答案,如果它對你有幫助。我很高興能夠提供幫助。 – itzswan

0

在onPreExecute:

AlertDialog progressDialog = new ProgressDialog(context, AlertDialog.THEME_DEVICE_DEFAULT_LIGHT); 
     progressDialog.setMessage("Please Wait..."); 
     progressDialog.show(); 

在onPostExecute

progressDialog.dismiss(); 
0

在onPreExecute()

private ProgressDialog pdia; 

    @Override 
    protected void onPreExecute(){ 
     super.onPreExecute(); 
     pdia = new ProgressDialog(LoginActivity.this); 
     pdia.setMessage("Loading, Please Wait..."); 
     pdia.show(); 
    } 

在onPostExecute()

protected void onPostExecute(String result) { 

    super.onPostExecute(result); 
     pdia.dismiss(); 
} 

在所有代碼:

class LoginCheck extends AsyncTask<String, String, String> { 

private ProgressDialog pdia; 

    @Override 
    protected void onPreExecute(){ 
     super.onPreExecute(); 
     pdia = new ProgressDialog(LoginActivity.this); 
     pdia.setMessage("Loading, Please Wait..."); 
     pdia.show(); 
    } 

protected String doInBackground(String... params) { 

    String responsetring = ""; 
    try { 
     SoapObject request = new SoapObject(NAMESPACE, "Logincheck"); 
     SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
     envelope.dotNet = true; 
     envelope.setOutputSoapObject(request); 
     request.addProperty("username",params[0]); 
     request.addProperty("password",params[1]); 
     //Msg("Version"+appversion+"AppName"+Appname,Toast.LENGTH_LONG); 
     HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); 
     try { 
      androidHttpTransport.call(NAMESPACE + "Logincheck", envelope); 
     } catch (IOException | XmlPullParserException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      Msg(e.toString(), Toast.LENGTH_LONG); 
     } 
     SoapPrimitive response; 
     try { 
      response = (SoapPrimitive) envelope.getResponse(); 
      responsetring = response.toString(); 
     // Msg(responsetring.toString(), 1); 
     } catch (SoapFault e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      Msg(e.toString(), Toast.LENGTH_LONG); 
     } 
     String[] splitrows = responsetring.split(";"); 
     String usernamestr = ""; 
     String deviceid = ""; 
     String isanydevice = ""; 

     if (responsetring.equals("false")) { 
     //  Helper.InfoMsg("Alert", "Please Check userame and password and confirm device is valid", LoginActivity.this); 

     } else { 
      usernamestr = splitrows[0]; 
      deviceid = splitrows[1]; 
      isanydevice = splitrows[2]; 
      TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); 
      if (deviceid.equals(tm.getDeviceId().toString())) { 
       LoginActivity.this.username = usernamestr; 
       Intent intent = new Intent(LoginActivity.this, MainActivity.class); 
       startActivity(intent); 
       overridePendingTransition(R.anim.right_in, R.anim.left_out); 
      } else { 
       TelephonyManager tm1 = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); 
      //  Helper.InfoMsg("Your Device Id", (tm1.getDeviceId().toString()), LoginActivity.this); 
       txt_warning.setText((tm1.getDeviceId().toString())); 
       if (isanydevice.equalsIgnoreCase("true")) { 
        LoginActivity.this.username = usernamestr; 
        Intent intent = new Intent(LoginActivity.this, MainActivity.class); 
        startActivity(intent); 
        overridePendingTransition(R.anim.right_in, R.anim.left_out); 
       } else { 
       // Helper.warning("Sorry", "Not Allowed To Login Other devices", LoginActivity.this); 
        // return false; 
       } 
      } 

     } 
     //return true; 
    } catch (Exception e) { 
     Msg(e.toString(), 1); 
     // return false; 
    } 
    return null; 
} 


protected void onPostExecute(String result) { 

    super.onPostExecute(result); 
     pdia.dismiss(); 
}