0
我是Java/Android的初学者,我试图增加我的知识做一个简单的游戏。 你可能听说过Genius。如何使用处理程序来更新我的主要活动?
好了,这里是我的主要活动代码:
package br.genius;
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class GeniusActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final Button b1 = (Button) findViewById(R.id.button1);
final Button b2 = (Button) findViewById(R.id.button2);
final Button b3 = (Button) findViewById(R.id.button3);
final Button b4 = (Button) findViewById(R.id.button4);
Button start = (Button) findViewById(R.id.button5);
start.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Principal p = new Principal(b1,b2,b3,b4);
}
});
}
public static void vermelho(int i, ArrayList<Button> alb) {
alb.get(i).setBackgroundColor(-65536);
}
}
,这里是我的课堂延伸的主题:
package br.genius;
import java.util.ArrayList;
import java.util.Random;
import android.widget.Button;
public class Principal extends Thread implements Runnable{
private ArrayList<Button> alb = new ArrayList<Button>();
private Button b1,b2,b3,b4;
private Thread tt;
public Principal(Button b1,Button b2,Button b3,Button b4) {
this.b1 = b1;
this.b2 = b2;
this.b3 = b3;
this.b4 = b4;
tt = new Thread(this);
tt.start();
//this.run();
}
public void run() {
int ve[] = iniciaSequencia();
for (int i = 0; i < 4; i++) {
switch (ve[i]) {
case 1:
alb.add(i, b1);
break;
case 2:
alb.add(i, b2);
break;
case 3:
alb.add(i, b3);
break;
case 4:
alb.add(i, b4);
break;
}
}
for (int i = 0; i < 4; i++) {
GeniusActivity.vermelho(i,alb);
try {
tt.wait(1500);
}
catch(InterruptedException e) {
}
//alb.get(i).setBackgroundColor(-7829368);
}
/*rr = new Runnable(){
public void run(){
for (int i = 0; i < 4; i++) {
vermelho(i);
//atrasador();
//alb.get(i).setBackgroundColor(-7829368); //
}
}
};*/
}
public int[] iniciaSequencia() {
int v[] = new int[4];
Random r = new Random();
for (int i = 0; i < 4; i++) {
v[i] = r.nextInt(4) + 1;
}
return v;
}
}
我得到一个名为$ CalledFromWrongThreadException错误:只有原来的线程创建一个视图层次结构可以触及其视图。
感谢, 利奥
你能发表一个这个处理程序/ Runnable的简短例子吗? – 2012-02-08 19:30:35