2012-02-22 91 views
1
public Button stb; 
static int cnt=0; 
public ArrayList<RadioButton> Butgrp1 = new ArrayList<RadioButton>(); 
Timer myt; 
TimerTask t; 

stb.setOnClickListener(新OnClickListener(){的Android:从螺纹访问UI元素

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上一组单选按钮,并设置为以规则间隔检查但我不断得到不同的错误,我意识到我必须使用一个处理程序,但它仍然不工作...任何人都可以请告诉我我要去哪里错了....是一个新手,我正在尝试的东西,以了解工作更好...请帮助...

+0

任何人都可以请检查一下吗? – Ajay 2012-02-23 15:49:40

+1

哪种类型的错误? – Sajmon 2012-06-12 21:53:25

回答

1

您可以尝试使用自己的Handler而不是Timer和Timed taks。

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()功能。

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

0
youractivityname.this.runOnUiThread(new Runnable() { 
        public void run() { 
         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); 
        } 
       });