Как включить кнопку через 5 секунд - PullRequest
0 голосов
/ 02 августа 2011

все! Мне нужно отключить кнопку на 5 секунд, а заголовок кнопки должен быть «Пропустить» плюс время, в течение которого кнопка будет отключена.

Я создал класс CTimer, расширяющий Thread, и определил метод run с помощью run (Button). Метод run получает кнопку, заголовок которой будет изменен, и выглядит следующим образом:

    public void run(Button skip){       
    for ( int i=5; i<0; i--)
    {
        skip.setText("Skip (" + i + ")");
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    skip.setEnabled(true);
}

Проблема в том, что код не работает, ни у кого, у кого-нибудь?

1 Ответ

2 голосов
/ 03 августа 2011

Я попробовал следующий код, и он прекрасно работает для меня:

public class Main_TestProject extends Activity 
{
  private Button b;
  private int index = 5;

  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) 
  {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    b = (Button) findViewById(R.id.my_button);      
    b.setEnabled(false);
    hHandler.sendEmptyMessage(0);
  }

  private Handler hHandler = new Handler()
  {
    @Override
    public void handleMessage(Message msg)
    {
        if(index > 0)
        {
            try
            {
                b.setText("Skip (" + String.valueOf(index) + ")");
                index--;
                Thread.sleep(1000);
                hHandler.sendEmptyMessage(0);
            } 
            catch (InterruptedException e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        else
        {
            b.setEnabled(true);
        }
    }
  };
}
...