我已将Android的NumberPicker小部件复制到我自己的应用程序中,但我遇到了一个问题......
当有人手动点击EditText并通过键盘更改它时,不会保存选择。是否有一些监听器可以实现检查并查看用户是否手动更改EditText以将其设置为当前?还是什么?
答案 0 :(得分:37)
我发现这个解决方案在android-developers google group中丢失了一些地方:
对于android SDK NumberPicker小部件,只需使用:
myNumberPicker.clearFocus();
在你试图获得它的价值之前。 如果您的活动只有NumberPicker,可能是按钮或微调器,并且您编辑它并尝试单击其他位置,则其onFocusChangedListener将无法正确处理。所以你只需要在使用getValue()之前强制它失去焦点。对我来说就像一个魅力。
答案 1 :(得分:2)
我使用了Michael Novak号码选择器。尽管onEditorAction已经实现,但它没有正确设置输入。对我来说很简单的方法就是在getCurrent中的textView上调用validateInput。
/**
* @return the current value.
*/
public int getCurrent() {
validateInput(mText);
return mCurrent;
}
答案 2 :(得分:1)
我使用numberpicker http://www.quietlycoding.com/?p=5遇到了同样的问题,我通过将OnKeyListener(而不是Junzi已经建议的OnEditorActionListener)添加到NumberPicker类来解决它。其他步骤也是如此:
public boolean onKey(View v, int keyCode, KeyEvent event) {
validateInput(v);
return false;
}
答案 3 :(得分:1)
如果您使用的是Android4.0.x中的Android NumberPicker,则意味着您可以使用getValue()获取NumberPicker的值。 http://developer.android.com/reference/android/widget/NumberPicker.html#getValue()
这是在android 4.0.x中获取Numberpicker的简单方法......
final NumberPicker np = new NumberPicker(CustomizedListView.this);
np.setMinValue(0);
np.setMaxValue(100);
np.setWrapSelectorWheel(true);
您可以使用np.getValue()方法获取值。
答案 4 :(得分:0)
您可以尝试将TextWatcher设置为EditText以执行相同操作,或者不允许用户手动输入值...
或者在那里保留一个OK按钮,只有当用户点击OK按钮时才从EditText中取出值
你试过这个样本吗?
答案 5 :(得分:0)
不确定您是否使用与我相同的Numberpicker:http://www.quietlycoding.com/?p=5。我试图将一个OnEditorActionListener添加到NumberClass,似乎它解决了我的问题。
实施 onEditorAction :
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
validateInput(v);
return false;
}
希望它有所帮助。