片段类中的Web服务调用

时间:2014-01-22 11:50:05

标签: android android-fragments datepicker

我正在使用导航抽屉开发应用程序。这个应用程序调用一些Web服务,并在列表中获取数据和显示。在我的应用程序中,当某个项目点击导航抽屉时,它会显示一些带有文本视图,列表视图和图像按钮的布局。这些布局显示使用片段。[片段类]。在这个类中我想调用一个Web服务来获取一些数据根据特定日期[日期是使用日期选择器设置]并在列表视图中显示该数据。

我已经实现了一种根据提供的日期获取数据的方法。但我的问题是,当我提出一个断点来检查我的代码时,应用程序消失了,也无法调试。[不会破坏点] ..我不能在碎片类中进行这些Web服务调用吗?如果是的话,我该怎么做?请指导我......

这是我的片段类

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;

       }  }
当我尝试调试

时,我得到了这个
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)

修改

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();
               }




        }


    }

}

0 个答案:

没有答案