Вы должны создать Handler
в потоке пользовательского интерфейса, то есть в onCreate
вашего Activity
.
Поскольку вы создаете его в методе run
фонового потока, обработчик выполнит ваш код в том же фоновом потоке.
Вы также можете инициализировать Handler
напрямую:
public class MyActivity extends Activity{
private Handler handler = new Handler();
//more code
}
А потом не используйте runOnUIThread
:
handler.post(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);
}
});
EDIT:
Хорошо, попробуйте этот очищенный код. Поскольку вы не опубликовали свою полную активность, это не будет работать из коробки:
public class TestActivity extends Activity {
private Button button;
static int cnt=0;
public ArrayList<RadioButton> buttonArray = new ArrayList<RadioButton>();
private Timer timer = new Timer();
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
timer.schedule(new MyTimerTask(), 1000,2000);
}
});
}
private void doButtonStuff(){
buttonArray.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);
}
}
private class MyTimerTask extends TimerTask{
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
doButtonStuff();
}
});
}
}
}