2016-03-31 13 views
0

私は学校プロジェクトを持っています。以前の開発者によって構築されました。私はそれを実行しようとしています。しかし、私はNullPointerExceptionを取得しています。ここに私のコードは次のとおりです。ヌルオブジェクトリファレンスでインターフェイスメソッド 'int org.ksoap2.serialization.KvmSerializable.getPropertyCount()'を呼び出そうとしました

private boolean isNetworkAvailable() 
{ 
    ConnectivityManager connectivityManager=(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo activeNetworkInfo=connectivityManager.getActiveNetworkInfo(); 
    return activeNetworkInfo !=null && activeNetworkInfo.isConnected(); 
} 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_registration); 
    setToolbar(); 

    new AsyncTask<Void,Void,Void>(){ 
     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      dialog=new ProgressDialog(RegistrationActivity.this); 
      dialog.setMessage("Loading..."); 
      dialog.show(); 
     } 

     @Override 
     protected Void doInBackground(Void... params) { 

      SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE1,OPERATION_NAME1); 
      SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
      envelope.dotNet = true; 
      envelope.setOutputSoapObject(request); 
      HttpTransportSE httpTransport = new HttpTransportSE(SOAP_ADDRESS1); 
      httpTransport.debug=true; 
      try { 
       httpTransport.call(SOAP_ACTION1, envelope); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } catch (XmlPullParserException e) { 
       e.printStackTrace(); 
      } 
      try { 
       response= envelope.getResponse(); 
       Log.e("response: ", response.toString() + ""); 
      } catch (SoapFault soapFault) { 
       soapFault.printStackTrace(); 
       Log.e("response: ", response.toString() + ""); 
      } 

      return null; 
     } 

     @Override 
     protected void onPostExecute(Void aVoid) { 
      super.onPostExecute(aVoid); 
      dialog.dismiss(); 

      try { 

       Log.e("response: ", response.toString() + ""); 
      }catch(Exception e){ 
       e.printStackTrace(); 
       Toast.makeText(RegistrationActivity.this,response.toString()+"",Toast.LENGTH_LONG).show(); 
      } 
      StringTokenizer tokens = new StringTokenizer(response.toString(), "="); 
      List<String> mylist=new ArrayList<String>(); 
      for(int i=0;tokens.hasMoreTokens();i++){ 
       StringTokenizer tokens1 = new StringTokenizer(tokens.nextToken(), ";"); 

       mylist.add(tokens1.nextToken()); 
      } 
      mylist.remove(0); 

      int partitionSize =1; 
      List<List<String>> partitions = new LinkedList<List<String>>(); 
      for (int i = 0; i < mylist.size(); i += partitionSize) { 
       partitions.add(mylist.subList(i, 
         i + Math.min(partitionSize, mylist.size() - i))); 
      } 

      city=new ArrayList<String>(); 
      for(int k=0;k<partitions.size();k++){ 
       city.add(partitions.get(k).get(0)); 
      } 

      callGetArea(); 

     } 

    }.execute(); 

    spcity= (Spinner) findViewById(R.id.spcity); 
    spcity.setOnItemSelectedListener(this); 

    sparea = (Spinner) findViewById(R.id.sparea); 
    sparea.setOnItemSelectedListener(this); 


    dateFormatter = new SimpleDateFormat("dd-MM-yyyy", Locale.US); 

    rg = (RadioGroup) findViewById(R.id.gendergroup); 
    name= (EditText) findViewById(R.id.fname); 
    address=(EditText)findViewById(R.id.address); 
    contact= (EditText) findViewById(R.id.contact); 
    email= (EditText) findViewById(R.id.email); 
    weight= (EditText) findViewById(R.id.weight); 
    password= (EditText) findViewById(R.id.password); 
    cpass= (EditText) findViewById(R.id.cpassword); 

    earea= (Spinner) findViewById(R.id.sparea); 
    ecity= (Spinner) findViewById(R.id.spcity); 

    btnContinue= (TextView)findViewById(R.id.btncont); 
    bdate = (EditText) findViewById(R.id.bdate); 
    bdate.setInputType(InputType.TYPE_NULL); 
    bdate.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      setDateTimeField(); 
      fromDatePickerDialog.show(); 

     } 
    }); 

    btnContinue.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (isEmptyField(name)) { 
       Toast.makeText(RegistrationActivity.this, "Please Enter Name", Toast.LENGTH_LONG).show(); 
      } else if (isEmptyField(bdate)) { 
       Toast.makeText(RegistrationActivity.this, "Please Select Birthdate", Toast.LENGTH_LONG).show(); 
      } else if (isEmptyField(address)) { 
       Toast.makeText(RegistrationActivity.this, "Please Enter Address", Toast.LENGTH_LONG).show(); 
      } else if (isEmptyField(weight)) { 
       Toast.makeText(RegistrationActivity.this, "Please Enter Weight", Toast.LENGTH_LONG).show(); 
      } else if (isEmptyField(contact)) { 
       Toast.makeText(RegistrationActivity.this, "Please Enter Contact", Toast.LENGTH_LONG).show(); 
      } else if (isEmptyField(email)) { 
       Toast.makeText(RegistrationActivity.this, "Please Enter E-Mail", Toast.LENGTH_LONG).show(); 
      }else if (!isEmailPattern(email)) { 
       Toast.makeText(RegistrationActivity.this, "Please Enter Valid E-Mail", Toast.LENGTH_LONG).show(); 
      }else if (isEmptyField(password)) { 
       Toast.makeText(RegistrationActivity.this, "Please Enter Password", Toast.LENGTH_LONG).show(); 
      } else if (isEmptyField(cpass)) { 
       Toast.makeText(RegistrationActivity.this, "Please Confirm Password", Toast.LENGTH_LONG).show(); 
      } else if (!isPasswordMatch(cpass,password)) { 
       Toast.makeText(RegistrationActivity.this, "Password doesn't match", Toast.LENGTH_LONG).show(); 
      } 
      else { 

       if(isNetworkAvailable()) { 

        new AsyncTask<Void, Void, Void>() { 
         @Override 
         protected void onPreExecute() { 
          super.onPreExecute(); 
          dialog = new ProgressDialog(RegistrationActivity.this); 
          dialog.setMessage("Loading..."); 
          dialog.show(); 
         } 

         @Override 
         protected Void doInBackground(Void... params) { 
          resp = loginCall(email.getText().toString().trim()); 
          return null; 
         } 

         @Override 
         protected void onPostExecute(Void aVoid) { 
          super.onPostExecute(aVoid); 
          Log.e("Response", resp + ""); 
          dialog.dismiss(); 
          if (resp == 1) { 
           UserClass userClass = new UserClass(); 
           userClass.name = name.getText().toString(); 
           userClass.dob = bdate.getText().toString(); 
           int selectedId = rg.getCheckedRadioButtonId(); 
           RadioButton radioButton = (RadioButton) findViewById(selectedId); 
           userClass.gender = radioButton.getText().toString(); 
           userClass.address = address.getText().toString(); 
           userClass.city = city.get(ecity.getSelectedItemPosition()); 
           userClass.area = area.get(earea.getSelectedItemPosition()).city; 
           userClass.weight = weight.getText().toString(); 
           userClass.contact = contact.getText().toString(); 
           userClass.email = email.getText().toString(); 
           userClass.password = password.getText().toString(); 

           Log.e("name", userClass.name + ""); 
           Log.e("dob", userClass.dob + ""); 
           Log.e("gender", userClass.gender + ""); 
           Log.e("address", userClass.address + ""); 
           Log.e("city", userClass.city + ""); 
           Log.e("area", userClass.area + ""); 
           Log.e("weight", userClass.weight + ""); 
           Log.e("contact", userClass.contact + ""); 
           Log.e("email", userClass.email + ""); 
           Log.e("password", userClass.password + ""); 


           PrefUtils.setCurrentUser(userClass, RegistrationActivity.this); 

           Intent intent = new Intent(RegistrationActivity.this, RegistrationActivity2.class); 
           startActivity(intent); 
           finish(); 
          } else { 
           Toast.makeText(getApplicationContext(), "Email Already Exist", Toast.LENGTH_LONG).show(); 
          } 
         } 
        }.execute(); 

       } 
       else 
       { 
        Toast.makeText(RegistrationActivity.this, "Check Your Internet Connection", Toast.LENGTH_LONG).show(); 
       } 
      } 
     } 
    }); 

} 

public void onDateSet(DatePicker view, int year, int month, int day) { 
    Calendar userAge = new GregorianCalendar(year,month,day); 
    Calendar minAdultAge = new GregorianCalendar(); 
    minAdultAge.add(Calendar.YEAR, -18); 
    if (minAdultAge.before(userAge)) 
    { 
     Toast.makeText(RegistrationActivity.this,"Please enter valid date",Toast.LENGTH_LONG).show(); 
    } 
} 


private void callGetArea() { 

    new AsyncTask<Void,Void,Void>(){ 
     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      dialog=new ProgressDialog(RegistrationActivity.this); 
      dialog.setMessage("Loading..."); 
      dialog.show(); 
     } 

     @Override 
     protected Void doInBackground(Void... params) { 

      SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE2,OPERATION_NAME2); 
      SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
      envelope.dotNet = true; 
      envelope.setOutputSoapObject(request); 
      HttpTransportSE httpTransport = new HttpTransportSE(SOAP_ADDRESS2); 
      httpTransport.debug=true; 
      try { 
       httpTransport.call(SOAP_ACTION2, envelope); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } catch (XmlPullParserException e) { 
       e.printStackTrace(); 
      } 
      try { 
       response= envelope.getResponse(); 
       Log.e("response: ", response.toString() + ""); 
      } catch (SoapFault soapFault) { 
       soapFault.printStackTrace(); 
       Log.e("response: ", response.toString() + ""); 
      } 

      return null; 
     } 

     @Override 
     protected void onPostExecute(Void aVoid) { 
      super.onPostExecute(aVoid); 
      dialog.dismiss(); 

      try { 

       Log.e("response: ", response.toString() + ""); 
      }catch(Exception e){ 
       e.printStackTrace(); 
       Toast.makeText(RegistrationActivity.this,response.toString()+"",Toast.LENGTH_LONG).show(); 
      } 
      StringTokenizer tokens = new StringTokenizer(response.toString(), "="); 
      List<String> mylist=new ArrayList<String>(); 
      for(int i=0;tokens.hasMoreTokens();i++){ 
       StringTokenizer tokens1 = new StringTokenizer(tokens.nextToken(), ";"); 

       mylist.add(tokens1.nextToken()); 
      } 
      mylist.remove(0); 

      final int partitionSize =2; 
      List<List<String>> partitions = new LinkedList<List<String>>(); 
      for (int i = 0; i < mylist.size(); i += partitionSize) { 
       partitions.add(mylist.subList(i, 
         i + Math.min(partitionSize, mylist.size() - i))); 
      } 

      area=new ArrayList<Area>(); 
      for(int k=0;k<partitions.size();k++){ 
       area.add(new Area(partitions.get(k).get(0),partitions.get(k).get(1))); 
      } 


      TimeSpinnerAdapter1 tspcity=new TimeSpinnerAdapter1(RegistrationActivity.this,city); 
      spcity.setAdapter(tspcity); 
      spcity.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
       @Override 
       public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
        ArrayList<Area> tempList=new ArrayList<Area>(); 
        for(int i=0;i<area.size();i++){ 
         Log.e("city............",area.get(i).area+""); 
         if(area.get(i).area.equalsIgnoreCase(city.get(position))){ 
          tempList.add(area.get(i)); 
         } 
        } 
        TimeSpinnerAdapter tsparea = new TimeSpinnerAdapter(RegistrationActivity.this, tempList); 
        sparea.setAdapter(tsparea); 
       } 

       @Override 
       public void onNothingSelected(AdapterView<?> parent) { 

       } 
      }); 

     } 

    }.execute(); 

} 

private void setDateTimeField() { 

    Calendar newCalendar = Calendar.getInstance(); 
    fromDatePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() { 

     public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
      Calendar userAge = new GregorianCalendar(year,monthOfYear,dayOfMonth); 
      Calendar minAdultAge = new GregorianCalendar(); 
      minAdultAge.add(Calendar.YEAR, -18); 
      if (minAdultAge.before(userAge)) 
      { 
       Toast.makeText(RegistrationActivity.this,"Please Enter Valid Date",Toast.LENGTH_LONG).show(); 
      } else { 
       bdate.setText(dateFormatter.format(userAge.getTime())); 
      } 

     } 

    },newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH)); 
} 

public boolean isEmptyField(EditText param1) { 

    boolean isEmpty = false; 
    if (param1.getText() == null || param1.getText().toString().equalsIgnoreCase("")) { 
     isEmpty = true; 
    } 
    return isEmpty; 
} 

private void setToolbar() { 
    toolbar = (Toolbar) findViewById(R.id.toolbar); 
    if (toolbar != null) { 
     toolbar.setTitle("Register"); 
     setSupportActionBar(toolbar); 
    } 
} 

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 
    finish(); 
} 

@Override 
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 

} 

@Override 
public void onNothingSelected(AdapterView<?> parent) { 

} 

public class TimeSpinnerAdapter extends BaseAdapter implements SpinnerAdapter { 

    private final Context activity; 
    private ArrayList<Area> asr; 

    public TimeSpinnerAdapter(Context context,ArrayList<Area> asr) { 
     this.asr=asr; 
     activity = context; 
    } 

    public int getCount() 
    { 
     return asr.size(); 
    } 

    public Object getItem(int i) 
    { 
     return asr.get(i); 
    } 

    public long getItemId(int i) 
    { 
     return (long)i; 
    } 


    @Override 
    public View getDropDownView(int position, View convertView, ViewGroup parent) { 
     TextView txt = new TextView(RegistrationActivity.this); 
     txt.setPadding(16,16,16,16); 
     txt.setTextSize(16); 
     txt.setGravity(Gravity.CENTER_VERTICAL); 
     txt.setText(asr.get(position).city); 
     txt.setTextColor(Color.parseColor("#494949")); 
     return txt; 

    } 

    public View getView(int i, View view, ViewGroup viewgroup) { 
     TextView txt = new TextView(RegistrationActivity.this); 
     txt.setGravity(Gravity.CENTER_VERTICAL); 
     txt.setPadding(16,16,16,16); 
     txt.setTextSize(16); 
     txt.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_spinner, 0); 
     txt.setText(asr.get(i).city); 
     txt.setTextColor(Color.parseColor("#ffffff")); 
     return txt; 
    } 
} 

public static boolean isEmailPattern(EditText param1) { 
    Pattern pattern = Patterns.EMAIL_ADDRESS; 
    return pattern.matcher(param1.getText().toString()).matches(); 
} 

public static boolean isPasswordMatch(EditText param1, EditText param2) { 
    boolean isMatch = false; 
    if (param1.getText().toString().equals(param2.getText().toString())) { 
     isMatch = true; 
    } 
    return isMatch; 
} 

public class TimeSpinnerAdapter1 extends BaseAdapter implements SpinnerAdapter { 

    private final Context activity; 
    private ArrayList<String> asr; 

    public TimeSpinnerAdapter1(Context context,ArrayList<String> asr) { 
     this.asr=asr; 
     activity = context; 
    } 

    public int getCount() 
    { 
     return asr.size(); 
    } 

    public Object getItem(int i) 
    { 
     return asr.get(i); 
    } 

    public long getItemId(int i) 
    { 
     return (long)i; 
    } 


    @Override 
    public View getDropDownView(int position, View convertView, ViewGroup parent) { 
     TextView txt = new TextView(RegistrationActivity.this); 
     txt.setPadding(16,16,16,16); 
     txt.setTextSize(16); 
     txt.setGravity(Gravity.CENTER_VERTICAL); 
     txt.setText(asr.get(position)); 
     txt.setTextColor(Color.parseColor("#494949")); 
     return txt; 

    } 

    public View getView(int i, View view, ViewGroup viewgroup) { 
     TextView txt = new TextView(RegistrationActivity.this); 
     txt.setGravity(Gravity.CENTER_VERTICAL); 
     txt.setPadding(16,16,16,16); 
     txt.setTextSize(16); 
     txt.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_spinner, 0); 
     txt.setText(asr.get(i)); 
     txt.setTextColor(Color.parseColor("#ffffff")); 
     return txt; 
    } 
} 


public int loginCall(String c1) 
{ 
    SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE,OPERATION_NAME); 
    PropertyInfo p1=new PropertyInfo(); 
    p1.setName("email"); 
    p1.setValue(c1); 
    p1.setType(String.class); 
    request.addProperty(p1); 



    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
      SoapEnvelope.VER11); 
    envelope.dotNet = true; 

    envelope.setOutputSoapObject(request); 

    HttpTransportSE httpTransport = new HttpTransportSE(SOAP_ADDRESS); 
    Object response=null; 

    try 
    { 
     httpTransport.debug=true; 
     httpTransport.call(SOAP_ACTION, envelope); 

     response = envelope.getResponse(); 
    } 
    catch (Exception ex) 
    { 
     // ex.printStackTrace(); 
     Toast.makeText(getApplicationContext(),"error",Toast.LENGTH_LONG).show(); 
     //displayExceptionMessage(ex.getMessage()); 
     //System.out.println(exception.getMessage()); 
    } 
    return Integer.parseInt(response.toString()); 
} 

私は応答= envelope.getResponse()でNullPointerExceptionが取得しています。

私のエラーは以下の通りです:

                 Process: com.nkdroid.blooddonation, PID: 16820 
                     java.lang.RuntimeException: An error occurred while executing doInBackground() 
                      at android.os.AsyncTask$3.done(AsyncTask.java:309) 
                      at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354) 
                      at java.util.concurrent.FutureTask.setException(FutureTask.java:223) 
                      at java.util.concurrent.FutureTask.run(FutureTask.java:242) 
                      at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) 
                      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
                      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
                      at java.lang.Thread.run(Thread.java:818) 
                     Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'int org.ksoap2.serialization.KvmSerializable.getPropertyCount()' on a null object reference 
                      at org.ksoap2.serialization.SoapSerializationEnvelope.getResponse(SoapSerializationEnvelope.java:513) 
                      at com.nkdroid.blooddonation.RegistrationActivity$1.doInBackground(RegistrationActivity.java:146) 
                      at com.nkdroid.blooddonation.RegistrationActivity$1.doInBackground(RegistrationActivity.java:120) 
                      at android.os.AsyncTask$2.call(AsyncTask.java:295) 

誰もがそれで私を助けることができますか? 私はコードが混乱していることを知っています。しかし、どんな助けもありがとう。 ありがとう! :)

答えて

-1

は、あなたの答えを明確にし、コードの書式設定を改善するために、より多くの詳細を追加してくださいWebServiceのpublic class Login(String name)

+0

request.addProperty("name",name)のために、あなたがあなたのサービスとAndroidのパラメータでプロパティと同じ名前を持つことを確認してください。 –

+0

@Linux Holic これはNullPointerExceptionを処理することで解決できますが、実行時に例外を処理するだけです。 catch(NullPointerException e){ e.printStackTrace(); } –

関連する問題

 関連する問題