web service calls in fragment class

这一生的挚爱 提交于 2020-01-25 01:26:05

问题


i am developing an application with the navigation drawer. this app calls to some web service and get data and shows in lists. in my app when some item clicks on the navigation drawer it shows some layout with a text view , list view and a image button. these layout shows using fragment.[fragment class].in this class i want to call a web service to get some data acording to purticular date [date is sets using a date picker] and show that data in a list view.

i have implemented a method to get data according to the date provided. but my problem is when i put a break point to check my code the app is disappeared and cant debug too.[ not going to a break point].. CAN'T I DO THESE WEB SERVICE CALLS INSIDE THE FRAGMENT CLASS ? IF IT IS , HOW CAN I DO THIS ? guide me please...

here is my fragment class

public class FindPeopleFragment extends Fragment    {


    TextView curentDate;




public FindPeopleFragment(TextView date){
    curentDate = date;
}
public FindPeopleFragment(){

}



@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.schedule, container, false);
    ImageButton date = (ImageButton) rootView.findViewById(R.id.btnDate); 
    curentDate = (TextView) rootView.findViewById(R.id.txtCurrentDate);

    final Calendar c = Calendar.getInstance();
    int year  = c.get(Calendar.YEAR);
    int month = c.get(Calendar.MONTH);
    int day   = c.get(Calendar.DAY_OF_MONTH);

    curentDate.setText(new StringBuilder()
    // Month is 0 based, just add 1
    .append(year)
    .append("-")
           .append(month + 1)
            .append("-").append(day));

    // call to the method which is get the data according to the date
    ArrayList<HashMap<String, String>> requests= loadSortedRequests((String) curentDate.getText());

    if(requests!=null){

        ListView listview =(ListView) rootView.findViewById(R.id.sortedList);
        String[] items = new String[] {"No Requests for the selected Date"};
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, items); 
        listview.setAdapter(adapter);

    }
    else{

   }



    date.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            showDatePicker();
            //loadSortedRequests((String) curentDate.getText());
        }
    });
    return rootView;


}



        private void showDatePicker() {
        DatePickerFragment date = new DatePickerFragment();
        /**
         * Set Up Current Date Into dialog
         */
        Calendar calender = Calendar.getInstance();
        Bundle args = new Bundle();
        args.putInt("year", calender.get(Calendar.YEAR));
        args.putInt("month", calender.get(Calendar.MONTH));
        args.putInt("day", calender.get(Calendar.DAY_OF_MONTH));
        date.setArguments(args);
        /**
         * Set Call back to capture selected date
         */
        date.setCallBack(ondate);
        date.show(getFragmentManager(), "Date Picker");
       }

       OnDateSetListener ondate = new OnDateSetListener() {

        public void onDateSet(DatePicker view, int year, int monthOfYear,
          int dayOfMonth) {

        curentDate.setText(String.valueOf(dayOfMonth) + "/" + String.valueOf(monthOfYear+1)
             + "/" + String.valueOf(year));

         //call a method to get requests acording to the current date



        }
       };


       // the methode which is retrive the data
       public ArrayList<HashMap<String, String>> loadSortedRequests(String date){


           ArrayList<HashMap<String, String>> sortedRequestsList = new ArrayList<HashMap<String, String>>();
           String caregiverID = MainActivity.confirm;
           String User = null;
           String ActualImage=null;
           JsonParser jParser = new JsonParser();
           JSONObject parameter = new JSONObject();
           JSONObject requestsObject = new JSONObject();

           try {
            parameter.put("caregiverPersonId", caregiverID);
            requestsObject =  jParser.getJSONFromUrl(parameter, MainActivity.url);

            JSONArray resultSet = requestsObject.getJSONArray("d");

        /*  if(resultSet.length()>0)
            {
                JSONObject c1 = resultSet.getJSONObject(0);
                JSONObject apoinmentObj1  = c1.getJSONObject("Appointment");
                User = apoinmentObj1.getString("UserId");
            }*/

            for(int i=0;i<resultSet.length();i++){


                JSONObject record = resultSet.getJSONObject(i);

                JSONObject appoinment = record.getJSONObject("Appointment").getJSONObject("DayTimeSlot");
                String startTime = appoinment.getString("StartTime");
                String endTime = appoinment.getString("EndTime");

                JSONObject pationProfobj = record.getJSONObject("PatientProfile");
                String firstName = pationProfobj.getString("FirstName");
                String lastName = pationProfobj.getString("LastName");
                String Imageurl = pationProfobj.getString("ImageURL");

                   if(!Imageurl.equalsIgnoreCase("null")){

                          if(!Imageurl.equalsIgnoreCase("") ) {

                              String newUrl =  Imageurl.substring(3); 
                            //  ActualImage = "http://vardle.para.com"+newUrl;
                            ActualImage = "http://vardle.com/"+newUrl;
                          }
                          else{
                            ActualImage = null;
                          }


                        }


                        else{
                          ActualImage = null; 
                        }

                String jsonDate = record.getString("Date");
                String formatingDate = jsonDate.replace("/Date(", "").replace(")/", "");
                Long Ldat = Long.valueOf(formatingDate);
                Date theDate = new Date(Ldat);
                String dateOfAppoinmnt = (String) DateFormat.format("MM/dd/yy", theDate);

                if(dateOfAppoinmnt.equalsIgnoreCase(date)){

                    HashMap< String, String> sort = new HashMap<String, String>();
                    sort.put("StartTime", startTime);
                    sort.put("EndTime", endTime);
                    sort.put("FirstName", firstName);
                    sort.put("LastName", lastName);
                    sort.put("ImageURL", Imageurl);
                    sort.put("Date", dateOfAppoinmnt);
                    sortedRequestsList.add(sort);



                }

            }





        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return sortedRequestsList;

       }  }

i get this when i try to debug

01-22 17:03:45.817: E/dalvikvm(22453): VM aborting
01-22 17:03:45.817: A/libc(22453): Fatal signal 11 (SIGSEGV) at 0xdeadd00d (code=1), thread 22453 (onlist.jsonlist)

EDIT

public class FindPeopleFragment extends Fragment    {


    TextView curentDate;
    ListView listview;



public FindPeopleFragment(TextView date){
    curentDate = date;
}
public FindPeopleFragment(){

}



@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.schedule, container, false);
    ImageButton date = (ImageButton) rootView.findViewById(R.id.btnDate); 
    curentDate = (TextView) rootView.findViewById(R.id.txtCurrentDate);
    listview =(ListView) rootView.findViewById(R.id.sortedList);
    final Calendar c = Calendar.getInstance();
    int year  = c.get(Calendar.YEAR);
    int month = c.get(Calendar.MONTH);
    int day   = c.get(Calendar.DAY_OF_MONTH);

    curentDate.setText(new StringBuilder()
    // Month is 0 based, just add 1
    .append(year)
    .append("-")
           .append(month + 1)
            .append("-").append(day));

    // call to the method which is get the data according to the date




    date.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            showDatePicker();
            //loadSortedRequests((String) curentDate.getText());
        }
    });
    return rootView;


}



        private void showDatePicker() {
        DatePickerFragment date = new DatePickerFragment();
        /**
         * Set Up Current Date Into dialog
         */
        Calendar calender = Calendar.getInstance();
        Bundle args = new Bundle();
        args.putInt("year", calender.get(Calendar.YEAR));
        args.putInt("month", calender.get(Calendar.MONTH));
        args.putInt("day", calender.get(Calendar.DAY_OF_MONTH));
        date.setArguments(args);
        /**
         * Set Call back to capture selected date
         */
        date.setCallBack(ondate);
        date.show(getFragmentManager(), "Date Picker");
       }

       OnDateSetListener ondate = new OnDateSetListener() {

        public void onDateSet(DatePicker view, int year, int monthOfYear,
          int dayOfMonth) {

        curentDate.setText(String.valueOf(dayOfMonth) + "/" + String.valueOf(monthOfYear+1)
             + "/" + String.valueOf(year));

         //call a method to get requests acording to the current date
         new callService().execute(curentDate.getText().toString());


        }
       };


       // the methode which is retrive the data
       public ArrayList<HashMap<String, String>> loadSortedRequests(String date){


           ArrayList<HashMap<String, String>> sortedRequestsList = new ArrayList<HashMap<String, String>>();
           String caregiverID = MainActivity.confirm;
           String User = null;
           String ActualImage=null;
           JsonParser jParser = new JsonParser();
           JSONObject parameter = new JSONObject();
           JSONObject requestsObject = new JSONObject();

           try {
            parameter.put("caregiverPersonId", caregiverID);
            requestsObject =  jParser.getJSONFromUrl(parameter, MainActivity.url);

            JSONArray resultSet = requestsObject.getJSONArray("d");

        /*  if(resultSet.length()>0)
            {
                JSONObject c1 = resultSet.getJSONObject(0);
                JSONObject apoinmentObj1  = c1.getJSONObject("Appointment");
                User = apoinmentObj1.getString("UserId");
            }*/

            for(int i=0;i<resultSet.length();i++){


                JSONObject record = resultSet.getJSONObject(i);

                JSONObject appoinment = record.getJSONObject("Appointment").getJSONObject("DayTimeSlot");
                String startTime = appoinment.getString("StartTime");
                String endTime = appoinment.getString("EndTime");

                JSONObject pationProfobj = record.getJSONObject("PatientProfile");
                String firstName = pationProfobj.getString("FirstName");
                String lastName = pationProfobj.getString("LastName");
                String Imageurl = pationProfobj.getString("ImageURL");

                   if(!Imageurl.equalsIgnoreCase("null")){

                          if(!Imageurl.equalsIgnoreCase("") ) {

                              String newUrl =  Imageurl.substring(3); 
                            //  ActualImage = "http://vardle.parag.com"+newUrl;
                            ActualImage = "http://vardle.com/"+newUrl;
                          }
                          else{
                            ActualImage = null;
                          }


                        }


                        else{
                          ActualImage = null; 
                        }

                String jsonDate = record.getString("Date");
                String formatingDate = jsonDate.replace("/Date(", "").replace(")/", "");
                Long Ldat = Long.valueOf(formatingDate);
                Date theDate = new Date(Ldat);
                String dateOfAppoinmnt = (String) DateFormat.format("MM/dd/yy", theDate);

                if(dateOfAppoinmnt.equalsIgnoreCase(date)){

                    HashMap< String, String> sort = new HashMap<String, String>();
                    sort.put("StartTime", startTime);
                    sort.put("EndTime", endTime);
                    sort.put("FirstName", firstName);
                    sort.put("LastName", lastName);
                    sort.put("ImageURL", Imageurl);
                    sort.put("Date", dateOfAppoinmnt);
                    sortedRequestsList.add(sort);



                }

            }





        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return sortedRequestsList;

       }


       public class callService extends AsyncTask<String, Void, ArrayList<HashMap<String, String>>>{


        private ProgressDialog pDialog;

        @Override
        protected void onPreExecute() {
            // TODO Auto-generated method stub
            super.onPreExecute();
            /*pDialog = new ProgressDialog(activity);
            pDialog.setMessage("Getting Data ...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(true);
            pDialog.show();
            */

            pDialog = ProgressDialog.show(getActivity(), "Read Data", "Please Wait..", true, false);

        }


        @Override
        protected ArrayList<HashMap<String, String>> doInBackground(String... arg0) {
            // TODO Auto-generated method stub

            ArrayList<HashMap<String, String>> requests= loadSortedRequests(arg0[0]);

            return requests;
        //  return x;
        }

        @Override
        protected void onPostExecute(ArrayList<HashMap<String, String>> res) {
            // TODO Auto-generated method stub
             pDialog.dismiss();



               // String hidenAppid = res;




                if(res!=null){


                    String[] items = new String[] {"No Requests for the selected Date"};
                    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, items); 
                    listview.setAdapter(adapter);

                }
                else{

                    Toast.makeText(getActivity(), "bla bl;a bnla", Toast.LENGTH_LONG).show();
               }




        }


    }

}

来源:https://stackoverflow.com/questions/21282126/web-service-calls-in-fragment-class

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!