0

我看过较早的帖子,所有答案都建议 clearFocus。

我不能这样做,因为我的 TimePicker 不在对话框中,所以我不知道什么时候应该调用 clearFocus() 函数,如果我之后尝试修改 TimePicker,它可能会使我的应用程序崩溃。

我确信这个问题有一个解决方案,因为 Android 附带的警报应用程序在没有对话框的情况下执行此功能。

欢迎任何答案,问候!

4

1 回答 1

2

如果用户通过点击加号或减号或通过使用键盘手动编辑时间来更改小时或分钟值,您应该使用TimePicker.OnTimeChangedListener来处理onTimeChanged操作。

这是我的代码

活动:

public class MainActivity extends Activity 
    implements TimePicker.OnTimeChangedListener {

    private TextView resultTime;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        resultTime = (TextView) findViewById(R.id.activity_main_textview_resulttime);

        TimePicker timePicker = (TimePicker) findViewById(R.id.activity_main_timepicker);
        {    
            timePicker.setIs24HourView(true);
            timePicker.setOnTimeChangedListener(this);
        }
    }

    @Override
    public void onTimeChanged(TimePicker timePickerView, int hours, int minutes) {
        final String stringNewTime = hours + " : " + minutes;
        resultTime.setText(stringNewTime);
    }   
}

布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:gravity="center"
    android:orientation="vertical" >

    <TimePicker
        android:id="@+id/activity_main_timepicker"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="14dip"
        android:layout_marginRight="16dip"
        android:focusable="true"
        android:focusableInTouchMode="true" />

    <TextView
        android:id="@+id/activity_main_textview_resulttime"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>

希望,它会帮助你!

于 2012-09-10T21:48:21.817 回答