【问题标题】:Android NumberPicker widget, how to get value entered via softkeyboard?Android NumberPicker 小部件,如何获取通过软键盘输入的值?
【发布时间】:2013-10-25 05:52:52
【问题描述】:

我无法让我的NumberPicker 的编辑字段正常工作,我已经阅读了几个对类似问题有帮助的答案,但似乎都没有解决这个特定问题。虽然递增和递减按钮工作正常,但如果我使用软键盘输入数字,我无法使用 NumberPicker.getValue() 方法检索该值。我尝试过使用自己的NumberPicker.OnValueChangedListener(),但除非我单击向上或向下按钮,否则不会调用它,而不是像某些人建议的那样按下软键盘完成按钮。有人可以帮我吗?这是 Android 错误吗?

这是我的 XML 布局:

<LinearLayout 
android:orientation="horizontal" 
android:layout_width="wrap_content" android:layout_height="wrap_content">
    <TextView android:id="@+id/textView1" android:layout_weight="1"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:layout_height="wrap_content" android:text="@string/enter_nights_"
        android:layout_width="0dp" android:padding="10dip"
        android:textColor="@color/black"
        ></TextView>
    <NumberPicker
        android:id="@+id/numPick"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

以及我的 Activity onCreate() 中的初始化代码:

    mNumNights = (NumberPicker) findViewById(R.id.numPick);
    mNumNights.setMinValue(1);
    mNumNights.setMaxValue(99);
    mNumNights.setValue(mNights);
    mNumNights.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
        @Override
        public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
            // do something here
            Log.d(TAG, "Number of Nights change value.");
        }
    });

在退出 Activity 时,我得到如下值:

            mNights = mNumNights.getValue();

我在Android NumberPicker documentation 中没有看到任何其他方法。我确实看到了 post 建议挂钩 onEditorActionListener() 以获得“完成”按钮,但这并没有告诉我如何获得价值!所以,总而言之,我的问题是如何获取值,为什么 NumberPicker 不自动更新其值?

谢谢!

编辑:我偶然发现了这个SO question,这与我的问题非常相似,那里的答案看起来很有帮助,尽管我希望有比那里建议的更好的方法。

【问题讨论】:

    标签: android android-softkeyboard numberpicker


    【解决方案1】:

    要让活动接受编辑,您需要在调用nNumNights.getValue(); 之前调用nNumNights.clearFocus();。该调用将更新控件的值。

    【讨论】:

    • 这应该是公认的答案。我在对话框中使用 NumberPicker 时遇到了这个问题。如果我在 NumberPicker 键盘条目上点击“完成”之前点击对话框中的肯定按钮,则选择器将返回前一个值。清除它的焦点迫使它更新并返回正确的值,而不必在键盘上点击“完成”。
    猜你喜欢
    • 2011-05-16
    • 2015-03-28
    • 1970-01-01
    • 1970-01-01
    • 2019-06-17
    • 2015-02-10
    • 2015-03-18
    • 1970-01-01
    • 2014-04-07
    相关资源
    最近更新 更多