1

在我的应用程序中,我有 2 个按钮打开时间对话框/日期对话框,然后我选择日期和时间,然后按确定。因此该值显示在 TextView 中(对于每个),所以我需要从 TextViews 中获取 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 中显示的日期代码:

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("-"));

单击“保存”按钮时的代码:

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

那么如何从文本视图中获取值以保存在数据库中呢?

编辑 时间选择器对话框:

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

我会将值作为数字存储在 SQLite 中以使其兼容,因为 SQLite 没有内置日期/时间数据类型。

您需要将值保存在 DatePicke'sOnDateSetListener中。

给你一个如何做到这一点的例子很大程度上取决于你如何创建日期选择器。假设设置了值,您可以使用下面的代码。请注意,它假设 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 回答
0

看到您可以在对话框上注册
OnDateSetListener 侦听器,当您按下 OK 按钮时该侦听器将被触发。例如

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 数据库中,则此日期或时间将自动转换为字符串。请阅读。所以把它放在你的任何格式中,比如 dd-MM-yyyy 并存储它。并在检索读取为字符串并根据需要转换为日期格式时

于 2012-10-11T18:54:35.330 回答