datePickerDialogをEditText
のようにキャストできますか?私はEditText
Androidスタジオで値をキャストして取得するdatePickerDialog
final EditText etName = (EditText) this.findViewById(R.id.etName);
を宣言することができ、我々はdatePickerDialogについて
String name = etName.getText().toString();
何にそれをキャストすることができますか?
を登録するにはRegisterRequest.javaを作成しました。私はmysqlデータベースに入れるタイプは何かを知らないので、タイプをdatetimeと設定しました。
public class RegisterRequest extends StringRequest{
private static final String REGISTER_REQUEST_URL = "http://localhost/takonami/Register.php";
private Map<String, String> params;
public RegisterRequest(Date datetime, Response.Listener<String> listener){
super(Method.POST, REGISTER_REQUEST_URL, listener, null);
params = new HashMap<>();
params.put("datetime", "" +datetime);
}
@Override
public Map<String, String> getParams() {
return params;
}
}
そしてRegisterActivity.javaインチ「etDate」 n登録ボタン「bRegister」という名前の編集テキストを設定しました。私はすでにonClickメソッドの中にpickerDialogを追加しています。
@Override
public void onClick(View v) {
if (v == etDate) {
final Calendar c = Calendar.getInstance();
mYear = c.get(Calendar.YEAR);
mMonth = c.get(Calendar.MONTH);
mDay = c.get(Calendar.DAY_OF_MONTH);
DatePickerDialog dpd = new DatePickerDialog(this,
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
// Display Selected date in textbox
etDate.setText(year + "-"
+ (monthOfYear + 1) + "-" + dayOfMonth);
}
}, mYear, mMonth, mDay);
dpd.show();
}
しかし、私はタイプがString、ダブル、フロートまたはint型ではないのでbRegisterリスナー内etDateをキャストする方法がわかりません。それ日時形式です。私はそれを間違っているのですか?ボタン上の
bRegister = (Button)findViewById(R.id.bRegister);
bRegister.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
datePicker = (DatePicker)findViewById(R.id.etDate);
Integer dobYear = datePicker.getYear();
Integer dobMonth = datePicker.getMonth();
Integer dobDate = datePicker.getDayOfMonth();
StringBuilder sb=new StringBuilder();
sb.append(dobYear.toString()).append("-").append(dobMonth.toString()).append("-").append(dobDate.toString()).append(" 00:00:00");
String dobStr=sb.toString();
Response.Listener<String> responseListener = new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject jsonObject = new JSONObject(response);
Boolean success = jsonObject.getBoolean("success");
if (success) {
Toast.makeText(RegisterActivity.this, "Register success", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(RegisterActivity.this, "failed success", Toast.LENGTH_SHORT).show();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
};
RegisterRequest registerRequest = new RegisterRequest(datePicker, responseListener);
RequestQueue requestQueue = Volley.newRequestQueue(RegisterActivity.this);
requestQueue.add(registerRequest);
}else {
Toast.makeText(RegisterActivity.this, "Required fields asterisk", Toast.LENGTH_SHORT).show();
}
}
});
ところで、ここで私のRegister.phpファイルだ
<?php
$connect = mysqli_connect("localhost", "root", "root", "takonami");
$datetime = $_POST['datetime'];
global $connect, $datetime ;
$statement = mysqli_prepare($connect, "INSERT INTO user (datetime) VALUES (?)");
mysqli_stmt_bind_param($statement, "i", $datetime);
mysqli_stmt_execute($statement);
mysqli_stmt_close($statement);
$response = array();
echo json_encode($response);
?>
上記の私のコーディングをチェックできますか?私は宣言し、bRegister.onSetListenerの内部にキャストしています。データベース内のdatetime型は日時形式であるためです。ありがとう。 – Rozaimi