问题
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