public Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch (msg.what) {
case 0x123:
one.setImageResource(imageIds[currentImageId++]);
two.setImageResource(imageIds[currentImageId1++]);
three.setImageResource(imageIds[currentImageId2++]);
four.setImageResource(imageIds[currentImageId3++]);
if (currentImageId >= imageIds.length) {
currentImageId = 0;
}
if (currentImageId1 >= imageIds.length) {
currentImageId1 = 0;
}
if (currentImageId2 >= imageIds.length) {
currentImageId2 = 0;
}
if (currentImageId3 >= imageIds.length) {
currentImageId3 = 0;
}
break;
default:
break;
}
linearLayout.invalidate();
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.yaobude);
initView();
}
public void initView() {
linearLayout = (LinearLayout)findViewById(R.id.linearlayout);
one = (ImageView) findViewById(R.id.one);
two = (ImageView) findViewById(R.id.two);
three = (ImageView) findViewById(R.id.three);
four = (ImageView) findViewById(R.id.four);
one.setOnClickListener(this);
two.setOnClickListener(this);
three.setOnClickListener(this);
four.setOnClickListener(this);
imageIds = new int[]{
R.drawable.ee1,R.drawable.ee2,R.drawable.ee3,R.drawable.ee4,R.drawable.mmm2,R.drawable.mmm3
};
tt = new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
Message msg = new Message();
msg.what = 0x123;
System.out.println("----------"+msg.what);
mHandler.handleMessage(msg);
}
};
timer.schedule(tt, 0, period);
}
代碼如上,為啥還是會報不能更新ui線程的錯誤呢?求指點 thanks 報錯語句:android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
謝謝樓上 找到原因了 mHandler.handleMessage(msg); - -! mHandler.sendEmptyMessage(msg.what);