gpt4 book ai didi

android - 我的日期更改时如何调用异步任务。?

转载 作者:行者123 更新时间:2023-11-30 01:37:51 25 4
gpt4 key购买 nike

我有一个 Date Picker ,当我从 Date Picker 选择日期时,我想加载我的 asyncTask ,我的代码在这里

datepicker.setOnClickListener(new OnClickListener() {

@SuppressWarnings("deprecation")
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
showDialog(DATE_DIALOG_ID);
}
});
new ParentInputData().execute();


}

public void onStart(final Node node) {
Looper.prepare();
}

@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DATE_DIALOG_ID:
// set date picker as current date
return new DatePickerDialog(getParent().getParent().getParent(),
datePickerListener, year, month, day);
}
return null;
}

private DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() {

// when dialog box is closed, below method will be called.
public void onDateSet(DatePicker view, int selectedYear,
int selectedMonth, int selectedDay) {
year = selectedYear;
month = selectedMonth;
day = selectedDay;

// set selected date into textview
currDate.setText(new StringBuilder().append(month + 1).append("/")
.append(day).append("/").append(year).append(" "));

date = new StringBuilder().append(month + 1).append("/")
.append(day).append("/").append(year).append(" ");

currentDate = currDate.getText().toString();
getParentInput();



}

};
class ParentInputData extends AsyncTask<String, String, JSONObject> {


String loginUrl = ("http://54.152.108.131/iphone111/getParentInput?child_id="+id+"&date="+date);

@Override
protected void onPreExecute() {
super.onPreExecute();

}

@Override
protected JSONObject doInBackground(String... params) {
System.out.println(loginUrl);

JSONParser jParser = new JSONParser();
JSONObject json = jParser.getJSONFromUrl(loginUrl);

String nihal = json.toString();

Log.d("JSIN RESPONSE :", nihal);

return json;



}

@Override
protected void onPostExecute(JSONObject json) {
try {

json_array = json.getJSONArray("CenterInfoData");
for (int i = 0; i < json_array.length(); i++) {
JSONObject c = json_array.getJSONObject(i);
c = c.getJSONObject("ParentInput");

String wake_up_time = c.getString("wake_up_time");
String sleep_quality = c.getString("sleep_quality");
String person_picking_child = c.getString("person_picking_child");
String pick_up_time = c.getString("pick_up_time");
String last_diaper_bm = c.getString("last_diaper_bm");
String last_bottle_feeding = c.getString("last_bottle_feeding");
String last_medication_name = c.getString("last_medication_name");
String additional_notes = c.getString("additional_notes");

问题是如何在我的 JSON URL 中动态设置日期以在我从日期选择器中选择日期时获取数据。请帮助我。

我的 LogCat 详细信息在这里

01-20 05:08:34.547: E/AndroidRuntime(11352): FATAL EXCEPTION: AsyncTask #1
01-20 05:08:34.547: E/AndroidRuntime(11352): Process: com.MyKidzDay, PID: 11352
01-20 05:08:34.547: E/AndroidRuntime(11352): java.lang.RuntimeException: An error occured while executing doInBackground()
01-20 05:08:34.547: E/AndroidRuntime(11352): at android.os.AsyncTask$3.done(AsyncTask.java:300)
01-20 05:08:34.547: E/AndroidRuntime(11352): at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
01-20 05:08:34.547: E/AndroidRuntime(11352): at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
01-20 05:08:34.547: E/AndroidRuntime(11352): at java.util.concurrent.FutureTask.run(FutureTask.java:242)
01-20 05:08:34.547: E/AndroidRuntime(11352): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
01-20 05:08:34.547: E/AndroidRuntime(11352): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
01-20 05:08:34.547: E/AndroidRuntime(11352): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
01-20 05:08:34.547: E/AndroidRuntime(11352): at java.lang.Thread.run(Thread.java:841)
01-20 05:08:34.547: E/AndroidRuntime(11352): Caused by: java.lang.IllegalArgumentException: Illegal character in query at index 75: http://54.152.108.131/iphone111/getParentInput?child_id=6272&date=1/20/2016
01-20 05:08:34.547: E/AndroidRuntime(11352): at java.net.URI.create(URI.java:727)
01-20 05:08:34.547: E/AndroidRuntime(11352): at org.apache.http.client.methods.HttpPost.<init>(HttpPost.java:79)
01-20 05:08:34.547: E/AndroidRuntime(11352): at com.MykidzDayUpdate.JSONParser.getJSONFromUrl(JSONParser.java:36)
01-20 05:08:34.547: E/AndroidRuntime(11352): at com.KidsTabs.KidSummary$ParentInputData.doInBackground(KidSummary.java:1674)
01-20 05:08:34.547: E/AndroidRuntime(11352): at com.KidsTabs.KidSummary$ParentInputData.doInBackground(KidSummary.java:1)
01-20 05:08:34.547: E/AndroidRuntime(11352): at android.os.AsyncTask$2.call(AsyncTask.java:288)
01-20 05:08:34.547: E/AndroidRuntime(11352): at java.util.concurrent.FutureTask.run(FutureTask.java:237)
01-20 05:08:34.547: E/AndroidRuntime(11352): ... 4 more

最佳答案

How to set date dynamically in my JSON URL to get data when I select date from date Picker

OnDateSetListeneronDateSet 方法中调用 ParentInputData().execute() 并将更新的 url 作为参数传递给 execute 方法如:

   public void onDateSet(DatePicker view, int selectedYear,
int selectedMonth, int selectedDay) {
....your code here

date = new StringBuilder().append(month + 1).append("/")
.append(day).append("/").append(year).append(" ");
String loginUrl="...?child_id="+id+"&date="+URLEncoder.encode(date.toString());
ParentInputData().execute(loginUrl);
....your code here
}

现在在 doInBackground 中使用 params[0] 获取 url :

    @Override
protected JSONObject doInBackground(String... params) {

JSONParser jParser = new JSONParser();
JSONObject json = jParser.getJSONFromUrl(params[0]);
....
}

关于android - 我的日期更改时如何调用异步任务。?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34896374/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com