Проблема с ImageButton.setVisibility () - PullRequest
1 голос
/ 24 апреля 2010

У меня проблема при настройке видимости двух кнопок изображений одна поверх другой. Идея состоит в том, чтобы реализовать управление воспроизведением / паузой. Проблема состоит в том, что единственная часть, где настройка видимости фактически работает, находится в слушателях щелчка кнопок. Если я пытаюсь изменить это где-то еще, ничего не происходит. Есть идеи, почему это происходит?

playBtn.setOnClickListener(new OnClickListener() {//PLAY BUTTON LISTENER
    public void onClick(View v) {
 playBtn.setVisibility(ImageButton.GONE);
 pauseBtn.setVisibility(ImageButton.VISIBLE);
 mp.start();
    }});

pauseBtn.setOnClickListener(new OnClickListener() {//PAUSE BUTTON LISTENER
 public void onClick(View v) {
  pauseBtn.setVisibility(ImageButton.GONE);
  playBtn.setVisibility(ImageButton.VISIBLE);
  mp.pause();
 }});

final class SeekBarTask extends TimerTask {
  public SeekBarTask(int duration) {

  }
  @Override
  public void run() {
   if(seekBar.getProgress() >= mp.getDuration()) {//IF SONG HAS FINISHED...
    pauseBtn.setVisibility(ImageButton.GONE);//THESE ONES
    playBtn.setVisibility(ImageButton.VISIBLE);//DOESN'T WORK
    mp.stop();
   }
   else {
   seekBar.incrementProgressBy(100);
   }
  }
 }

Ответы [ 4 ]

1 голос
/ 24 апреля 2010

Я бы рекомендовал просто поменять значок одного ImageButton.

0 голосов
/ 08 июля 2012

я заметил, что установка ImageButton на View.INVISIBLE не работает, когда вы установили для него анимацию. Вы должны удалить анимацию, а затем сделать ее невидимой. плохая ловушка, я думаю ...

0 голосов
/ 24 апреля 2010

Я не помню деталей манипуляции Android GUI, но может ли это быть связано с тем, что вы делаете это из другого потока, а вы не должны?

0 голосов
/ 24 апреля 2010

Я думаю, что может произойти только одна из двух вещей. Либо этот код никогда не попадет, либо переменные не ссылаются на те же экземпляры объектов, на которые вы ожидаете их получить. Вы поставили точку останова в этом состоянии? Я бы проверил, что точка останова даже попала туда, а затем проверил бы, чтобы переменные указывали на правильные экземпляры кнопок.

Не видя оставшуюся часть кода, я должен спросить ... почему вы проверяете индикатор выполнения для условия "завершения воспроизведения", а не для использования медиаплееров при завершении вызова?

Я делаю что-то очень похожее и использую OnCompletionListener MediaPlayer, чтобы перевернуть видимость моих кнопок.

...