【发布时间】:2018-03-12 11:24:42
【问题描述】:
MySQL 数据库存储日期 minDate (01/09/2017) 和 maxDate (01/10/2017)。
这些日期需要在应用程序中接收并写入相应的 CalendarView 属性。
请帮助优化和修复代码。
下面是代码。
public class RecordActivity extends AppCompatActivity {
HttpResponse httpResponse;
Button button;
TextView textView;
CalendarView mCalendarView;
JSONObject jsonObject = null;
String StringHolder = "";
// Добавление URL-адреса HTTP-сервера в строковую переменную.
String HttpURL = "http://localhost/date_min_max.php";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_record);
textView = (TextView) findViewById(R.id.textView);
mCalendarView = (CalendarView) findViewById(R.id.calendarView);
// Вызов метода GetDataFromServerIntoTextView для установки данных JSon MySQL в TextView.
new GetDataFromServerIntoTextView(RecordActivity.this).execute();
}
// Объявление метода GetDataFromServerIntoTextView с помощью AsyncTask.
public class GetDataFromServerIntoTextView extends AsyncTask<Void, Void, Void> {
// Объявление CONTEXT.
public Context context;
public GetDataFromServerIntoTextView(Context context) {
this.context = context;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... arg0) {
HttpClient httpClient = new DefaultHttpClient();
// Добавление HttpURL к моему объекту HttpPost.
HttpPost httpPost = new HttpPost(HttpURL);
try {
httpResponse = httpClient.execute(httpPost);
StringHolder = EntityUtils.toString(httpResponse.getEntity(), "UTF-8");
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
// Передача переменной владельца строки в JSONArray.
JSONArray jsonArray = new JSONArray(StringHolder);
jsonObject = jsonArray.getJSONObject(0);
String minDateString = jsonArray.getJSONObject(0).getString("minDate");
String maxDateString = jsonArray.getJSONObject(0).getString("maxDate");
// Парсим дату
SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
Date minDate = formatter.parse(minDateString);
Date maxDate = formatter.parse(maxDateString);
// Получаем время
long minDateTime = minDate.getTime();
long maxDateTime = maxDate.getTime();
// Как-то инициализируете и работаете с этим
CalendarView dpd;
CalendarView dp = mCalendarView;
// Устанавливаем даты
dp.setMinDate(minDateTime);
dp.setMaxDate(maxDateTime);
} catch (JSONException e) {
e.printStackTrace();
} catch (Exception e) {
// TODO Автоматически генерируемый блок catch
e.printStackTrace();
}
return null;
}
protected void onPostExecute(Void result) {
try {
// Добавление строки JSOn в textview после завершения загрузки.
textView.setText(jsonObject.getString("minDate"));
} catch (JSONException e) {
// TODO Автоматически генерируемый блок catch
e.printStackTrace();
}
}
}
}
我通过执行形成 JSON 的 php 从 mysql 接收日期。
如果您能在我的任务中提供任何帮助,我将不胜感激!
【问题讨论】:
-
“修复代码”:有什么问题?
-
dp.setMinDate(minDateTime); - 以红色突出显示。方法 setMaxDate 必须从 UI 或 UI 线程调用,目前推断线程是 workerless... (Ctrl+F1)