Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 尝试调用接口方法';int org.ksoap2.serialization.KvmSerializable.getPropertyCount()';关于空对象引用_Java_Android_Nullpointerexception_Ksoap2_Android Ksoap2 - Fatal编程技术网

Java 尝试调用接口方法';int org.ksoap2.serialization.KvmSerializable.getPropertyCount()';关于空对象引用

Java 尝试调用接口方法';int org.ksoap2.serialization.KvmSerializable.getPropertyCount()';关于空对象引用,java,android,nullpointerexception,ksoap2,android-ksoap2,Java,Android,Nullpointerexception,Ksoap2,Android Ksoap2,我有一个学校项目。它是由以前的某个开发人员构建的。我正在试着运行它。但是我得到了NullPointerException。这是我的密码: private boolean isNetworkAvailable() { ConnectivityManager connectivityManager=(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetwor

我有一个学校项目。它是由以前的某个开发人员构建的。我正在试着运行它。但是我得到了NullPointerException。这是我的密码:

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());
}
有人能帮我吗? 我知道代码很乱。但任何帮助都将被感激。
谢谢!:)

确保您的服务和android参数中的属性名称相同,例如WebService
公共类登录(字符串名称)中的
request.addProperty(“name”,name)

请添加更多详细信息以澄清您的答案并改进代码格式。@Linux Holic您可以通过处理NullPointerException来解决此问题,但它只在运行时处理您的异常。catch(NullPointerException e){e.printStackTrace();}
                                                                       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)