2012-04-05 1 views
2

私は、ユーザーが生年月日を入力したユーザー入力に対してedittextを使用しています。 edittextの入力タイプはDateで、その日付を変数に渡しています。その日付はその変数に渡されず、何らかのエラーを出します。EditTextから日付を取得し、それをAndroidのデータベースに保存するにはどうすればいいですか?

私が使用していたコードは、私はタイプがデータベースにその日付を格納するために必要とされるので、どのようなデータベースにその日付を渡したい

その後
Edit dob=(EditText)findViewById(R.id.dob); 
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); 
    String dob_var=sdf.format(dob.getText()); 
    //dob_var=dob.getText().toString(); 
    System.out.println(dob_var); 

を下回っています。 私logcatは、次のとおりです。

04-05 16:54:22.060: D/AndroidRuntime(3104): Shutting down VM 
04-05 16:54:22.146: E/AndroidRuntime(3104): FATAL EXCEPTION: main 
04-05 16:54:22.146: E/AndroidRuntime(3104): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.foursquaregame.in/com.foursquaregame.in.Astro_talk}: java.lang.IllegalArgumentException 
04-05 16:54:22.146: E/AndroidRuntime(3104):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 
04-05 16:54:22.146: E/AndroidRuntime(3104):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
04-05 16:54:22.146: E/AndroidRuntime(3104):  at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
04-05 16:54:22.146: E/AndroidRuntime(3104):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
04-05 16:54:22.146: E/AndroidRuntime(3104):  at android.os.Handler.dispatchMessage(Handler.java:99) 
04-05 16:54:22.146: E/AndroidRuntime(3104):  at android.os.Looper.loop(Looper.java:123) 
04-05 16:54:22.146: E/AndroidRuntime(3104):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
04-05 16:54:22.146: E/AndroidRuntime(3104):  at java.lang.reflect.Method.invokeNative(Native Method) 
04-05 16:54:22.146: E/AndroidRuntime(3104):  at java.lang.reflect.Method.invoke(Method.java:521) 
04-05 16:54:22.146: E/AndroidRuntime(3104):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
04-05 16:54:22.146: E/AndroidRuntime(3104):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
04-05 16:54:22.146: E/AndroidRuntime(3104):  at dalvik.system.NativeStart.main(Native Method) 
04-05 16:54:22.146: E/AndroidRuntime(3104): Caused by: java.lang.IllegalArgumentException 
04-05 16:54:22.146: E/AndroidRuntime(3104):  at java.text.DateFormat.format(DateFormat.java:373) 
04-05 16:54:22.146: E/AndroidRuntime(3104):  at java.text.Format.format(Format.java:133) 
04-05 16:54:22.146: E/AndroidRuntime(3104):  at com.foursquaregame.in.Astro_talk.onCreate(Astro_talk.java:32) 
04-05 16:54:22.146: E/AndroidRuntime(3104):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
04-05 16:54:22.146: E/AndroidRuntime(3104):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
04-05 16:54:22.146: E/AndroidRuntime(3104):  ... 11 more 
+0

をそれを得たあなたのエラーは何ですか?ここに投稿 –

+0

私はこのコードを含むその活動に移動すると、アプリケーションがクラッシュします –

+0

ここにあなたのlogcatを貼ります –

答えて

10

最後に...これはあなたを助ける

DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); // Make sure user insert date into edittext in this format. 

Date dateObject; 

try{ 
String dob_var=(tx.getText().toString()); 

dateObject = formatter.parse(dob_var); 

date = new SimpleDateFormat("dd/MM/yyyy").format(dateObject); 
time = new SimpleDateFormat("h:mmaa").format(dateObject); 
} 

catch (java.text.ParseException e) 
    { 
    // TODO Auto-generated catch block 
     e.printStackTrace(); 
     Log.i("E11111111111", e.toString()); 
    } 

    Toast.makeText(getBaseContext(), date + time, Toast.LENGTH_LONG).show(); 

ホープ、

おかげで...

3

String dob_var=sdf.format(dob.getText().toString().trim()); 
+0

は同じ問題を依然として得ています。このコードを含むアクティビティを移動すると、私のアプリケーションがクラッシュします –

7

まずしてみてください、あなたは、日付にあなたのEditTextの文字列を変換する必要があります。

SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); 
Date dob_var = sdf.parse(dob.getText()); 

今sqliteの標準の日付文字列にdob_varを変換します。

DateFormat dateFormatISO8601 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
String strDob = dateFormatISO8601.format(dob_var); 

/* save strDob into database */ 
+0

DateFormat型のメソッドparse(String)は引数には適用されません(編集可能)dobを解析しようとするとエラーが発生します –

+0

ifあなたの* dob *はnullではありません。これを次のように使います: 'if(!TexUtils.isEmpty(dob.getText()){/ * do something * /}' – waqaslam

関連する問題