0

我想知道是否有一种方法可以在不使用对话框的情况下获取用户在屏幕上的 TimePicker 中设置的时间。当我可以在屏幕上显示 TimePicker 时,我没有看到创建一个会弹出 TimePickerDialog 的按钮的意义。即在本教程和许多其他类似的 TimePicker 教程中可以看到,拥有两个 TimePicker 是没有意义的:http ://www.mkyong.com/android/android-time-picker-example/

我正在使用 picker.getCurrentHour() 和 picker.getCurrentMinute() 但它只是在我按下按钮后返回系统的当前时间。有没有办法得到用户输入的时间?

这是我在单击按钮后检索时间的方式:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_set_time);
    picker = new TimePicker(SetTimeActivity.this);
    Button save=(Button)findViewById(R.id.saveAlarmButton); 
    save.setOnClickListener(onSave);                
}

private View.OnClickListener onSave=new View.OnClickListener()
{
    public void onClick(View v)
    {
        hour=picker.getCurrentHour();
        min=picker.getCurrentMinute();

        System.out.println(hour + " : " + min);         
    }
};


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".SetTimeActivity" >

<Button
    android:id="@+id/saveAlarmButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/timePicker"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="28dp"
    android:text="Save" />

<TimePicker
    android:id="@+id/timePicker"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/textView1"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="32dp" />

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="26dp"
    android:text="Set time for alarm"
    android:textAppearance="?android:attr/textAppearanceLarge" />

</RelativeLayout>

但它只是给了我当前的时间。

4

3 回答 3

1

您的代码应该可以正常工作。当您尝试通过数字输入输入日期时,可能会出现问题。这是由于NumberPicker更新,完成了选择器失去焦点。因此,您可以尝试确保选择器失去焦点,因此它将消耗当前用户输入:

picker.clearFocus();
hour=picker.getCurrentHour();
min=picker.getCurrentMinute();
于 2013-04-22T19:49:06.530 回答
0

选择器类的定义是它打开一个对话框来选择一些东西:

Android 提供控件供用户选择时间或选择日期作为即用型对话框。

当然,您可以随时尝试其他为您提供自定义选择器并获取其布局的解决方案,例如this onehereherehere

这样,您可以将选择器的布局放置在您希望的任何位置,而无需任何对话框。

于 2013-04-22T19:36:23.517 回答
0

您可以像任何其他小部件一样将小部件添加到活动中。您可以像这样获取日期/时间:

    // Format date and time from pickers
    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.YEAR, datePicker.getYear());
    calendar.set(Calendar.MONTH, datePicker.getMonth());
    calendar.set(Calendar.DAY_OF_MONTH, datePicker.getDayOfMonth());
    calendar.set(Calendar.HOUR_OF_DAY, timePicker.getCurrentHour());
    calendar.set(Calendar.MINUTE, timePicker.getCurrentMinute());
    calendar.set(Calendar.SECOND, 0);
    calendar.set(Calendar.MILLISECOND, 0);
于 2013-04-22T19:43:35.230 回答