我正在努力将数字选择器集成到我的应用程序中.活动显示每个带有数字选择器的项目列表.用户可以使用数字选择器增加或减少数量.当他们这样做时,我想更新显示价格的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(); } }); }
解决方法
要使用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(); } }