[英]Multiple SeekBars listener
我在同一個視圖上有多個搜索欄:
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)" );
}
如果第一個或第二個小節移動到同一個監聽器中,我想做出一些不同的事情(這是一個好習慣嗎?),但是怎么做?? 在這里,我的應用程序無法執行我想要的操作
現在,您有 2 個具有以下 ID 的搜索欄:
現在在 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;
}
}
除了比較資源 ID,您還可以只檢查 SeekBar 對象是否相等。 例子:
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
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.