【问题标题】:Get time from Timepicker's edit Text从 Timepicker 的编辑文本中获取时间
【发布时间】:2012-09-03 14:24:32
【问题描述】:

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

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

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

欢迎任何答案, 问候!

【问题讨论】:

    标签: android android-edittext android-softkeyboard timepicker numberpicker


    【解决方案1】:

    您应该使用 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>
    

    希望对你有帮助!

    【讨论】:

    • 非常感谢,但这对我不起作用。当我使用 inputText 修改时间时,OntimeChanged 没有注册。
    • 您的意思是当光标聚焦在小时或分钟字段上,并且您正在输入数字时,它不处理更改?知道,那些你输入的东西,例如- 分钟,然后集中精力处理变化!
    • 嗯,我刚刚意识到,当我将光标放在小时字段上并编辑某些内容时,会调用 onTimeChanged 函数。但是,当我在第二个 NumberPicker (minutesField) 上执行相同操作时,什么也没有发生。
    • 对不起,为什么不使用 timePicker 而不是 NumberPicker? NumberPicker 仅在第 11 个 api 级别之后才支持!无论如何,正如我们所见,它在编辑值时有效。但我会考虑如何处理时间选择器不聚焦的事件。
    • 出现了混乱。我说 NumberPicker 是因为 TimePicker 是使用两个 NumberPicker 实现的。对不起。
    猜你喜欢
    • 2012-07-19
    • 1970-01-01
    • 2011-06-15
    • 2019-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-02
    相关资源
    最近更新 更多