Jav*_*bra 9 android onclicklistener numberpicker
我正在努力将数字选择器集成到我的应用程序中.活动显示每个带有数字选择器的项目列表.用户可以使用数字选择器增加或减少数量.当他们这样做时,我想更新显示价格的TextView.
我试图实现这一目标时遇到了困难.我做了一个简单的项目,并试图在用户点击小部件时尝试显示一个Toast消息,但无济于事.
我的猜测是,数字窗口小部件不被视为按钮,因此点击监听器不起作用?我很感激有关添加监听器的任何建议.
以下是我的代码:
NumberPicker np;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
np = (NumberPicker)findViewById(R.id.numberPicker1);
np.setMaxValue(99);
np.setMinValue(0);
np.setValue(50);
np.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(v.getContext(), "Number selected", Toast.LENGTH_SHORT).show();
}
});
}
Run Code Online (Sandbox Code Playgroud)
Zyo*_*yoo 18
要设置监听器Picker,您的活动必须实现选择器接口监听器.(实际上,您的活动不是强制实现接口,您也可以使用匿名内部方法.无论什么工作.)
所以在你的活动中:
public class MainActivity extends Activity implements NumberPicker.OnValueChangeListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
NumberPicker np = (NumberPicker)findViewById(R.id.numberPicker1);
np.setMaxValue(99);
np.setMinValue(0);
np.setValue(50);
np.setOnValueChangedListener(this);
}
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
Toast.makeText(this, "change", Toast.LENGTH_SHORT).show();
}
}
Run Code Online (Sandbox Code Playgroud)
nit*_*jri 10
对于较新的Android开发(比如我),活动本身并不需要实现监听.它只需要传递给setOnValueChangedListener().
这有助于避免过多implements和过多的重叠@Overrides.
例:
// Number Picker
NumberPicker np = (NumberPicker) getView().findViewById(R.id.numberPicker1);
np.setMinValue(0);
np.setMaxValue(35);
np.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker numberPicker, int i, int i2) {
Toast.makeText(this, "Value was: " + Integer.toString(i) + " is now: " + Integer.toString(i2), Toast.LENGTH_SHORT).show();
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18143 次 |
| 最近记录: |