public Button stb;
static int cnt=0;
public ArrayList<RadioButton> Butgrp1 = new ArrayList<RadioButton>();
Timer myt;
TimerTask t;


stb.setOnClickListener(new OnClickListener(){

public void onClick(View v) {

    myt.schedule(new TimerTask() {

        @Override
        public void run() {

            // TODO Auto-generated method stub


            System.out.println("Entering run");
            Handler h=new Handler();

            h.post(new Runnable() {

                public void run() {

                    // TODO Auto-generated method stub
                    runOnUiThread(new Runnable() {

                        public void run() {
                            // TODO Auto-generated method stub
                            Butgrp1.get(cnt).setChecked(true);
                            cnt=cnt+1;
                            if(cnt>4)
                                cnt=0;
                            if(cnt>0)
                            //  Butgrp1.get(cnt-1).setChecked(false);
                            System.out.println(cnt);
                        }
                    });


                }
            });

            //rg.getChildAt(cnt).setPressed(true);

        }
    },1000,2000);


我需要访问ui上的一组单选按钮并将其设置为定期检查,但是我不断收到不同的错误,我意识到我必须使用处理程序,但是仍然无法正常工作。有人可以告诉我在哪里我做错了...。我是一个新手,正在尝试一些东西以了解其工作效果。...请帮助...

最佳答案

您可以尝试使用自己的处理程序,而不是使用计时器和定时任务。

RefreshHandler mHandler = new RefreshHandler();


带有:

class RefreshHandler extends Handler
{
    @Override
    public void handleMessage(Message msg)
    {
        postYourElements();
    }

    public void sleep(long delayMillis)
    {
      this.removeMessages(0);
      sendMessageDelayed(obtainMessage(0), delayMillis);
    }
 }


并且比使用功能:

private void postYourElements()
{
    runOnUiThread(new Runnable() {

                        public void run() {
                            // TODO Auto-generated method stub
                            Butgrp1.get(cnt).setChecked(true);
                            cnt=cnt+1;
                            if(cnt>4)
                                cnt=0;
                            if(cnt>0)
                            //  Butgrp1.get(cnt-1).setChecked(false);
                            System.out.println(cnt);
                        }
                    });
    mHandler.sleep(TimerIntervallInMs);
}


要启动处理程序,只需在onClick方法下调用postYourElements()函数即可。

我不确定这是否适合您,但您可以尝试。

10-07 19:46