簡體   English   中英

多個 SeekBars 偵聽器

[英]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 的搜索欄:

  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;
    }
}


    

除了比較資源 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM