2016-10-06 5 views
-1

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); 
?> 

答えて

0

がすべての答えを組み合わせて行うコードスニペットを作った、このメソッドを呼び出しますそれの。あなたのクラスのトップに

インポート日付ピッカー:

import android.widget.DatePicker; 
Inside your class declare the following variable: 

private DatePicker dobPicker; 
And here is the code to be done in button click event: 

dobPicker = (DatePicker)findViewById(R.id.dobPicker); 
     Integer dobYear = dobPicker.getYear(); 
     Integer dobMonth = dobPicker.getMonth(); 
     Integer dobDate = dobPicker.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(); 

R.id.dobPickerで、dobPickerはレイアウトxmlファイルで、あなたの日付ピッカーです。これにより、最後に文字列が得られます。この文字列は、サーバーに保存または送信できます。

+0

上記の私のコーディングをチェックできますか?私は宣言し、bRegister.onSetListenerの内部にキャストしています。データベース内のdatetime型は日時形式であるためです。ありがとう。 – Rozaimi

0

//イベントが

private void datePicker(){ 
        Calendar calendar = Calendar.getInstance(); 
        final SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd", Locale.US); 
        DatePickerDialog datePickerDialog = new DatePickerDialog(activity, new DatePickerDialog.OnDateSetListener() { 

        public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
         Calendar newDate = Calendar.getInstance(); 
         newDate.set(year, monthOfYear, dayOfMonth); 
         // here code for store value in DB 
        String datTymValue = dateFormatter.format(newDate.getTime()); 
        } 

       }, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH)); 
       datePickerDialog.show(); 
     } 
+0

上記のコードを確認して何が間違っているか確認できますか?以前私の質問を編集しました。 。ありがとう。 – Rozaimi

+0

どのようなエラーがありますか? –

+0

アプリの動作が停止します。 RegisterActivity.javaのエラーは、私がdatePickerの値をキャストする方法を知らないことが原因です。 。 editText文字列で問題がない場合。 。 stmt_bind_paramsを "s"に変更しました。まだ仕事はありませんでした。 。私はdatetimeの型をコンストラクタのStringに変更しました。同じエラー。 bRegisterボタンを押すとアプリがクラッシュする。 – Rozaimi

関連する問題