OnSeekBarChangeListener всегда оценивается как ноль в Android - PullRequest
1 голос
/ 05 февраля 2012

У меня есть программа для Android, которую я создаю с 4 поисковыми панелями и 4 текстовыми представлениями, которые сопровождают каждую поисковую панель. Прямо сейчас я пытаюсь сделать содержимое каждого текстового представления равным целочисленному прогрессу поисковых полос. Это мой код в его нынешнем виде, и я пробовал много способов для правильной реализации OnSeekBarChangeListener, но LogCat по-прежнему показывает, что он равен нулю, когда sb1-sb4 устанавливает свой OnSeekBarChangeListener для OnSeekBarProgress. Пожалуйста, помогите мне определить мою проблему: (

public class TippopotamusActivity extends Activity {
    SeekBar sb1;
    SeekBar sb2;
    SeekBar sb3;
    SeekBar sb4;
    TextView tv1;
    TextView tv2;
    TextView tv3;
    TextView tv4;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    tv1 = (TextView) findViewById(R.id.textView1);
    tv2 = (TextView) findViewById(R.id.textView2);
    tv3 = (TextView) findViewById(R.id.textView3);
    tv4 = (TextView) findViewById(R.id.textView4);

    sb1 = (SeekBar) findViewById(R.id.seekBar1);
    sb2 = (SeekBar) findViewById(R.id.seekBar2);
    sb3 = (SeekBar) findViewById(R.id.seekBar3);
    sb4 = (SeekBar) findViewById(R.id.seekBar4);

    sb1.setOnSeekBarChangeListener(OnSeekBarProgress);
    sb2.setOnSeekBarChangeListener(OnSeekBarProgress);
    sb3.setOnSeekBarChangeListener(OnSeekBarProgress);
    sb4.setOnSeekBarChangeListener(OnSeekBarProgress);

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
}

OnSeekBarChangeListener OnSeekBarProgress =
        new OnSeekBarChangeListener() {

        public void onProgressChanged(SeekBar s, int progress, boolean touch){
            if(s.getId() == R.id.seekBar1)
            {
                tv1.setText(progress);
            }
            else if(s.getId() == R.id.seekBar2)
            {
                tv2.setText(progress);
            }
            else if(s.getId() == R.id.seekBar3)
            {
                tv3.setText(progress);
            }
            else
            {
                tv4.setText(progress);
            }
        }

        public void onStartTrackingTouch(SeekBar s){

        }

        public void onStopTrackingTouch(SeekBar s){

        }
        };

1 Ответ

1 голос
/ 05 февраля 2012

Переместите setContentView(R.layout.main); перед инициализацией переменных. Ваш onCreate метод должен выглядеть следующим образом

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    tv1 = (TextView) findViewById(R.id.textView1);
    tv2 = (TextView) findViewById(R.id.textView2);
    tv3 = (TextView) findViewById(R.id.textView3);
    tv4 = (TextView) findViewById(R.id.textView4);

    sb1 = (SeekBar) findViewById(R.id.seekBar1);
    sb2 = (SeekBar) findViewById(R.id.seekBar2);
    sb3 = (SeekBar) findViewById(R.id.seekBar3);
    sb4 = (SeekBar) findViewById(R.id.seekBar4);

    sb1.setOnSeekBarChangeListener(OnSeekBarProgress);
    sb2.setOnSeekBarChangeListener(OnSeekBarProgress);
    sb3.setOnSeekBarChangeListener(OnSeekBarProgress);
    sb4.setOnSeekBarChangeListener(OnSeekBarProgress);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...