我在同一个视图上有多个搜索栏:
barheures = (SeekBar)findViewById(R.id.barheures); // make seekbar object
barheures.setOnSeekBarChangeListener(this); // set seekbar listener.
// since we are using this class as the listener the class is "this"
barminutes = (SeekBar)findViewById(R.id.barminutes);
barminutes.setOnSeekBarChangeListener(this);
以下是清单:
@Override
public void onProgressChanged(SeekBar bar, int progress, boolean fromUser) {
// TODO Auto-generated method stub
Log.v("", "" + bar);
textMinutes.setText("" + progress + "Minute(s)" );
textHours.setText("" + progress + "Heure(s)" );
}
如果第一个或第二个栏已移入同一个列表器中,我想做一些不同的东西(这是一个好习惯吗?),但是如何?在这里,我的应用程序没有做我想要的^^
非常感谢
答案 0 :(得分:18)
现在,您有2个搜索栏,其中包含以下ID:
1)barheures - 它的id:R.id.barheures 2)barminutes - 其id:R.id.barminutes
现在在onProgressChanged(SeekBar bar,int progress,boolean fromUser)方法中,执行以下操作:
@Override
public void onProgressChanged(SeekBar bar, int progress, boolean fromUser) {
// TODO Auto-generated method stub
Log.v("", "" + bar);
switch (bar.getId()) {
case R.id.barheures:
textHours.setText("" + progress + "Heure(s)");
break;
case R.id.barminutes:
textMinutes.setText("" + progress + "Minute(s)");
break;
}
}
答案 1 :(得分:5)
您也可以只检查SeekBar对象是否相等,而不是比较资源ID。例如:
private SeekBar bar1;
private SeekBar bar2;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
...
bar1 = (SeekBar) findViewById(R.id.bar1);
bar2 = (SeekBar) findViewById(R.id.bar2);
...
}
@Override
public void onProgressChanged(SeekBar bar, int progress, boolean fromUser)
{
if (bar.equals(bar1))
{
// do something
}
else if (bar.equals(bar2))
{
// do something else
}
}
我更喜欢这样做,因为那时你只需要引用一次SeekBar资源的id(在onCreate
中)。