如何在Android Xamarin中的TimePickerDialog对象中获取所选时间?

时间:2017-12-13 17:35:08

标签: c# android xamarin

我有一个屏幕,用户在屏幕上从TimePickerDialog实例中选择一个时间。但在回电话中我无法获得所选日期。我的代码是这样的:

public void onSomeButtonClick(object sender, EventArgs e)
{
    t = new TimePickerDialog(this, (EventHandler<TimePickerDialog.TimeSetEventArgs>)null, hour, min, false);
    t.SetButton("OK", data_TimePickerCallback);
    t.Show()
}


private void data_TimePickerCallback(object sender, EventArgs e)
{
    int hour = ((TimePickerDialog)sender)... // How to get the Time selected here??
}

为什么我没有在构造函数中传递CallBack?由于this错误(基本上:在某些版本的android中,系统只在对话框中放入“Ok”按钮因此,如果您单击“确定”或单击“时间戳”对话框外部,则两者都会触发回调,就好像它正在确认一样),并且如此处所述,解决方法是通过在选取器中添加自定义按钮来添加行为,如上面的代码。

我以前的做法在大多数设备上运行良好,但并非全部因为这个错误,并且代码大致是这样的:

public void onSomeButtonClick(object sender, EventArgs e)
{
    new TimePickerDialog(this, data_TimePickerCallback, hour, min, false).Show();
}

private void data_TimePickerCallback(object sender, TimePickerDialog.TimeSetEventArgs e)
{
    int hour = e.HourOfDay;
    int minute = e.Minute;
}

在很容易获得时间之前,但现在有了这个改变,我没有在sender对象中找到一种方法来获得时间(int vars分钟和小时)。

修改:我还尝试在我的Activity类上实现TimePickerDialog.IOnTimeSetListener,并将OnTimeSet(TimePicker view, int hourOfDay, int minute)添加到其中作为下面的代码,但仍然导致了同样的错误:

public class CadCliente : Activity, TimePickerDialog.IOnTimeSetListener{

    public void OnTimeSet(TimePicker view, int hourOfDay, int minute)
    {
        // handles
    }

    //...
    public void onSomeButtonClick(object sender, EventArgs e)
    {
        new TimePickerDialog(this, this, hour, minute, false).Show();
    }
}

0 个答案:

没有答案