1

私のアプリには、時刻ダイアログ/日付ダイアログを開く 2 つのボタンがあり、日付と時刻を選択して [OK] を押します。したがって、値は TextView に (それぞれに対して) 表示されるため、TextView から VALUE を取得してデータベースに保存する必要があります。

データベース行=date

TextView に表示される時間のコード:

tvHora = (TextView) findViewById(R.id.tvHora);

    final Calendar d = Calendar.getInstance();
    hour = d.get(Calendar.HOUR_OF_DAY);
    minute = d.get(Calendar.MINUTE);

    //set current time into textview
    tvHora.setText(new StringBuilder().append(pad(hour)).append(":").append(pad(minute)));

TextView に表示される Date のコード:

tvData = (TextView) findViewById(R.id.tvData);

    final Calendar c = Calendar.getInstance();
    year = c.get(Calendar.YEAR);
    month = c.get(Calendar.MONTH);
    day = c.get(Calendar.DAY_OF_MONTH);

    //SET CURRENT DATE INTO TEXTVIEW

    tvData.setText(new StringBuilder().append(year).append("-").append(month + 1).append("-").append(day).append("-"));

SAVEボタンをクリックしたときのコード:

                        ContentValues valor = new ContentValues();
                        valor.put("mensagenssalvas", resultado);
                        db.insert("mensagens", null, valor);

では、テキストビューから値を取得してデータベースに保存するにはどうすればよいですか?

TimePicker ダイアログの 編集:

private TimePickerDialog.OnTimeSetListener timePickerListener = new TimePickerDialog.OnTimeSetListener() {

        public void onTimeSet(TimePicker view, int selectedHour, int selectedMinute) {
            // TODO Auto-generated method stub

            hour = selectedHour;
            minute = selectedMinute;

            //set current time into textview
            tvHora.setText(new StringBuilder().append(pad(hour)).append(":").append(pad(minute)));

        }
    };

日付ピッカー ダイアログ:

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

        public void onDateSet(DatePicker view, int Year, int monthOfYear,
                int dayOfMonth) {
            // TODO Auto-generated method stub

            year = Year;
            month = monthOfYear;
            day = dayOfMonth;

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

    }; 
4

2 に答える 2

0

OKボタンを押すと起動するダイアログで
OnDateSetListenerリスナーを登録できることを確認してください。例えば

OnDateSetListener
{           
           @Override
       public void onDateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth) {

        // here you can set the date to the textview as you want
     }
}

この日付をSQLITEデータベースに保存する場合は、2番目のポイントに到達すると、この日付または時刻が自動的に文字列に変換されます。これを読んでください。したがって、dd-MM-yyyyなどの任意の形式で保存します。読み取りを文字列として取得し、必要に応じて日付形式に変換します

于 2012-10-11T18:54:35.330 に答える
0

SQLiteには日付/時刻データ型が組み込まれていないため、値を数値としてSQLiteに保存して互換性を持たせます。

DatePicke の に値を保存する必要がありますOnDateSetListener

これを行う方法の例を挙げると、日付ピッカーの作成方法に大きく依存します。値が設定されていると仮定すると、以下のコードを使用できます。tvData と tvHora がクラス プロパティ (クラスへのグローバル変数) にあると仮定していることに注意してください。このように、一度設定すると再利用できます (これは onCreate で行う必要があります)。

private final SimpleDateFormat parser = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

//keep your current code for the date/time pickers..

public void saveData(View button) {
    String dateStr = tvData.getText().toString();
    String timeStr = tvHora.getText().toString();

    //only save if both fields are non empty 
    if (!TextUtils.isEmpty(dateStr) && !TextUtils.isEmpty(timeStr)) {
       try {
         Date d = parser.parse(dateStr + " " + timeStr);
         ContentValues valor = new ContentValues();
         valor.put("mensagenssalvas", d.getTime());
         db.insert("mensagens", null, valor);
       } catch(ParseException ex) {
          Log.e("YOURTAG", "Error parsing date", ex);
       }
    } else {
      Log.d("YOURTAG", "Both fields not present, can't save");
    }

}

ファイルの xml レイアウトで、次のような保存ボタンを作成します。

<Button  android:id="@+id/Save"
            android:onClick="saveData"
            android:text="Save" />

または、onClick を xml に入れたくない場合は、次のようなコードで同じことを行うことができます。

Button saveButton = findViewById(R.id.save);
saveButton.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View button) {
        saveData(button);
      }

});
于 2012-10-11T18:50:57.377 に答える