Java 修复或替换处理程序代码为自动随机
我需要这里的帮助,所以我想使用Handler每隔2秒自动随机选择我的案例列表 完整的代码如下Java 修复或替换处理程序代码为自动随机,java,android,random,handler,Java,Android,Random,Handler,我需要这里的帮助,所以我想使用Handler每隔2秒自动随机选择我的案例列表 完整的代码如下 public class play extends Activity implements View.OnClickListener{ int number; Button button1, button2, button3, button4, button5, button6, button7, button8, button9, button10, button11, button12, butt
public class play extends Activity implements View.OnClickListener{
int number;
Button button1, button2, button3, button4, button5, button6, button7, button8, button9, button10, button11, button12, button13, button14, button15, button16;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.play);
button1 = (Button)findViewById(R.id.button1);
button2 = (Button)findViewById(R.id.button2);
button3 = (Button)findViewById(R.id.button3);
button4 = (Button)findViewById(R.id.button4);
button5 = (Button)findViewById(R.id.button5);
button6 = (Button)findViewById(R.id.button6);
button7 = (Button)findViewById(R.id.button7);
button8 = (Button)findViewById(R.id.button8);
button9 = (Button)findViewById(R.id.button9);
button10 = (Button)findViewById(R.id.button10);
button11 = (Button)findViewById(R.id.button11);
button12 = (Button)findViewById(R.id.button12);
button13 = (Button)findViewById(R.id.button13);
button14 = (Button)findViewById(R.id.button14);
button15 = (Button)findViewById(R.id.button15);
button16 = (Button)findViewById(R.id.button16);
//i had use setOnClickListener(This) to make all of button do same logic in one method
// correct me if i wrong
button1.setOnClickListener(this);
button2.setOnClickListener(this);
button3.setOnClickListener(this);
button4.setOnClickListener(this);
button5.setOnClickListener(this);
button6.setOnClickListener(this);
button7.setOnClickListener(this);
button8.setOnClickListener(this);
button9.setOnClickListener(this);
button10.setOnClickListener(this);
button11.setOnClickListener(this);
button12.setOnClickListener(this);
button13.setOnClickListener(this);
button14.setOnClickListener(this);
button15.setOnClickListener(this);
button16.setOnClickListener(this);
}
// this is the method to make all of the button do same logic with one method
// correct me if i wrong
@Override
public void onClick(View v) {
//i use the handler method to do auto-random every 2 second
// correct me if i wrong
final Handler mHandler = new Handler();
final int ms=2000; //2secs.
//i got error in this line
// Define cannot be resolved to a type, Syntax error on token ":", { expected after this token, Syntax error, insert ";" to complete
Define a Runnable:
final Runnable mUpdateTimeTask = new Runnable() {
public void run() {
Random generator = new Random();
number = generator.nextInt(16) + 1;
// The '16' is the number of values
// Here, we are checking to see what the output of the random was
switch(number) {
case 1:
button1.setVisibility(View.VISIBLE);
button2.setVisibility(View.INVISIBLE);
button3.setVisibility(View.INVISIBLE);
button4.setVisibility(View.INVISIBLE);
button5.setVisibility(View.INVISIBLE);
button6.setVisibility(View.INVISIBLE);
button7.setVisibility(View.INVISIBLE);
button8.setVisibility(View.INVISIBLE);
button9.setVisibility(View.INVISIBLE);
button10.setVisibility(View.INVISIBLE);
button11.setVisibility(View.INVISIBLE);
button12.setVisibility(View.INVISIBLE);
button13.setVisibility(View.INVISIBLE);
button14.setVisibility(View.INVISIBLE);
button15.setVisibility(View.INVISIBLE);
button16.setVisibility(View.INVISIBLE);
break;
case 2:
button1.setVisibility(View.INVISIBLE);
button2.setVisibility(View.VISIBLE);
button3.setVisibility(View.INVISIBLE);
button4.setVisibility(View.INVISIBLE);
button5.setVisibility(View.INVISIBLE);
button6.setVisibility(View.INVISIBLE);
button7.setVisibility(View.INVISIBLE);
button8.setVisibility(View.INVISIBLE);
button9.setVisibility(View.INVISIBLE);
button10.setVisibility(View.INVISIBLE);
button11.setVisibility(View.INVISIBLE);
button12.setVisibility(View.INVISIBLE);
button13.setVisibility(View.INVISIBLE);
button14.setVisibility(View.INVISIBLE);
button15.setVisibility(View.INVISIBLE);
button16.setVisibility(View.INVISIBLE);
break;
case 3:
button1.setVisibility(View.INVISIBLE);
button2.setVisibility(View.INVISIBLE);
button3.setVisibility(View.VISIBLE);
button4.setVisibility(View.INVISIBLE);
button5.setVisibility(View.INVISIBLE);
button6.setVisibility(View.INVISIBLE);
button7.setVisibility(View.INVISIBLE);
button8.setVisibility(View.INVISIBLE);
button9.setVisibility(View.INVISIBLE);
button10.setVisibility(View.INVISIBLE);
button11.setVisibility(View.INVISIBLE);
button12.setVisibility(View.INVISIBLE);
button13.setVisibility(View.INVISIBLE);
button14.setVisibility(View.INVISIBLE);
button15.setVisibility(View.INVISIBLE);
button16.setVisibility(View.INVISIBLE);
break;
case 4:
button1.setVisibility(View.INVISIBLE);
button2.setVisibility(View.INVISIBLE);
button3.setVisibility(View.INVISIBLE);
button4.setVisibility(View.VISIBLE);
button5.setVisibility(View.INVISIBLE);
button6.setVisibility(View.INVISIBLE);
button7.setVisibility(View.INVISIBLE);
button8.setVisibility(View.INVISIBLE);
button9.setVisibility(View.INVISIBLE);
button10.setVisibility(View.INVISIBLE);
button11.setVisibility(View.INVISIBLE);
button12.setVisibility(View.INVISIBLE);
button13.setVisibility(View.INVISIBLE);
button14.setVisibility(View.INVISIBLE);
button15.setVisibility(View.INVISIBLE);
button16.setVisibility(View.INVISIBLE);
break;
case 5:
button1.setVisibility(View.INVISIBLE);
button2.setVisibility(View.INVISIBLE);
button3.setVisibility(View.INVISIBLE);
button4.setVisibility(View.INVISIBLE);
button5.setVisibility(View.VISIBLE);
button6.setVisibility(View.INVISIBLE);
button7.setVisibility(View.INVISIBLE);
button8.setVisibility(View.INVISIBLE);
button9.setVisibility(View.INVISIBLE);
button10.setVisibility(View.INVISIBLE);
button11.setVisibility(View.INVISIBLE);
button12.setVisibility(View.INVISIBLE);
button13.setVisibility(View.INVISIBLE);
button14.setVisibility(View.INVISIBLE);
button15.setVisibility(View.INVISIBLE);
button16.setVisibility(View.INVISIBLE);
break;
case 6:
button1.setVisibility(View.INVISIBLE);
button2.setVisibility(View.INVISIBLE);
button3.setVisibility(View.INVISIBLE);
button4.setVisibility(View.INVISIBLE);
button5.setVisibility(View.INVISIBLE);
button6.setVisibility(View.VISIBLE);
button7.setVisibility(View.INVISIBLE);
button8.setVisibility(View.INVISIBLE);
button9.setVisibility(View.INVISIBLE);
button10.setVisibility(View.INVISIBLE);
button11.setVisibility(View.INVISIBLE);
button12.setVisibility(View.INVISIBLE);
button13.setVisibility(View.INVISIBLE);
button14.setVisibility(View.INVISIBLE);
button15.setVisibility(View.INVISIBLE);
button16.setVisibility(View.INVISIBLE);
break;
case 7:
button1.setVisibility(View.INVISIBLE);
button2.setVisibility(View.INVISIBLE);
button3.setVisibility(View.INVISIBLE);
button4.setVisibility(View.INVISIBLE);
button5.setVisibility(View.INVISIBLE);
button6.setVisibility(View.INVISIBLE);
button7.setVisibility(View.VISIBLE);
button8.setVisibility(View.INVISIBLE);
button9.setVisibility(View.INVISIBLE);
button10.setVisibility(View.INVISIBLE);
button11.setVisibility(View.INVISIBLE);
button12.setVisibility(View.INVISIBLE);
button13.setVisibility(View.INVISIBLE);
button14.setVisibility(View.INVISIBLE);
button15.setVisibility(View.INVISIBLE);
button16.setVisibility(View.INVISIBLE);
break;
case 8:
button1.setVisibility(View.INVISIBLE);
button2.setVisibility(View.INVISIBLE);
button3.setVisibility(View.INVISIBLE);
button4.setVisibility(View.INVISIBLE);
button5.setVisibility(View.INVISIBLE);
button6.setVisibility(View.INVISIBLE);
button7.setVisibility(View.INVISIBLE);
button8.setVisibility(View.VISIBLE);
button9.setVisibility(View.INVISIBLE);
button10.setVisibility(View.INVISIBLE);
button11.setVisibility(View.INVISIBLE);
button12.setVisibility(View.INVISIBLE);
button13.setVisibility(View.INVISIBLE);
button14.setVisibility(View.INVISIBLE);
button15.setVisibility(View.INVISIBLE);
button16.setVisibility(View.INVISIBLE);
break;
case 9:
button1.setVisibility(View.INVISIBLE);
button2.setVisibility(View.INVISIBLE);
button3.setVisibility(View.INVISIBLE);
button4.setVisibility(View.INVISIBLE);
button5.setVisibility(View.INVISIBLE);
button6.setVisibility(View.INVISIBLE);
button7.setVisibility(View.INVISIBLE);
button8.setVisibility(View.INVISIBLE);
button9.setVisibility(View.VISIBLE);
button10.setVisibility(View.INVISIBLE);
button11.setVisibility(View.INVISIBLE);
button12.setVisibility(View.INVISIBLE);
button13.setVisibility(View.INVISIBLE);
button14.setVisibility(View.INVISIBLE);
button15.setVisibility(View.INVISIBLE);
button16.setVisibility(View.INVISIBLE);
break;
case 10:
button1.setVisibility(View.INVISIBLE);
button2.setVisibility(View.INVISIBLE);
button3.setVisibility(View.INVISIBLE);
button4.setVisibility(View.INVISIBLE);
button5.setVisibility(View.INVISIBLE);
button6.setVisibility(View.INVISIBLE);
button7.setVisibility(View.INVISIBLE);
button8.setVisibility(View.INVISIBLE);
button9.setVisibility(View.INVISIBLE);
button10.setVisibility(View.VISIBLE);
button11.setVisibility(View.INVISIBLE);
button12.setVisibility(View.INVISIBLE);
button13.setVisibility(View.INVISIBLE);
button14.setVisibility(View.INVISIBLE);
button15.setVisibility(View.INVISIBLE);
button16.setVisibility(View.INVISIBLE);
break;
case 11:
button1.setVisibility(View.INVISIBLE);
button2.setVisibility(View.INVISIBLE);
button3.setVisibility(View.INVISIBLE);
button4.setVisibility(View.INVISIBLE);
button5.setVisibility(View.INVISIBLE);
button6.setVisibility(View.INVISIBLE);
button7.setVisibility(View.INVISIBLE);
button8.setVisibility(View.INVISIBLE);
button9.setVisibility(View.INVISIBLE);
button10.setVisibility(View.INVISIBLE);
button11.setVisibility(View.VISIBLE);
button12.setVisibility(View.INVISIBLE);
button13.setVisibility(View.INVISIBLE);
button14.setVisibility(View.INVISIBLE);
button15.setVisibility(View.INVISIBLE);
button16.setVisibility(View.INVISIBLE);
break;
case 12:
button1.setVisibility(View.INVISIBLE);
button2.setVisibility(View.INVISIBLE);
button3.setVisibility(View.INVISIBLE);
button4.setVisibility(View.INVISIBLE);
button5.setVisibility(View.INVISIBLE);
button6.setVisibility(View.INVISIBLE);
button7.setVisibility(View.INVISIBLE);
button8.setVisibility(View.INVISIBLE);
button9.setVisibility(View.INVISIBLE);
button10.setVisibility(View.INVISIBLE);
button11.setVisibility(View.INVISIBLE);
button12.setVisibility(View.VISIBLE);
button13.setVisibility(View.INVISIBLE);
button14.setVisibility(View.INVISIBLE);
button15.setVisibility(View.INVISIBLE);
button16.setVisibility(View.INVISIBLE);
break;
case 13:
button1.setVisibility(View.INVISIBLE);
button2.setVisibility(View.INVISIBLE);
button3.setVisibility(View.INVISIBLE);
button4.setVisibility(View.INVISIBLE);
button5.setVisibility(View.INVISIBLE);
button6.setVisibility(View.INVISIBLE);
button7.setVisibility(View.INVISIBLE);
button8.setVisibility(View.INVISIBLE);
button9.setVisibility(View.INVISIBLE);
button10.setVisibility(View.INVISIBLE);
button11.setVisibility(View.INVISIBLE);
button12.setVisibility(View.INVISIBLE);
button13.setVisibility(View.VISIBLE);
button14.setVisibility(View.INVISIBLE);
button15.setVisibility(View.INVISIBLE);
button16.setVisibility(View.INVISIBLE);
break;
case 14:
button1.setVisibility(View.INVISIBLE);
button2.setVisibility(View.INVISIBLE);
button3.setVisibility(View.INVISIBLE);
button4.setVisibility(View.INVISIBLE);
button5.setVisibility(View.INVISIBLE);
button6.setVisibility(View.INVISIBLE);
button7.setVisibility(View.INVISIBLE);
button8.setVisibility(View.INVISIBLE);
button9.setVisibility(View.INVISIBLE);
button10.setVisibility(View.INVISIBLE);
button11.setVisibility(View.INVISIBLE);
button12.setVisibility(View.INVISIBLE);
button13.setVisibility(View.INVISIBLE);
button14.setVisibility(View.VISIBLE);
button15.setVisibility(View.INVISIBLE);
button16.setVisibility(View.INVISIBLE);
break;
case 15:
button1.setVisibility(View.INVISIBLE);
button2.setVisibility(View.INVISIBLE);
button3.setVisibility(View.INVISIBLE);
button4.setVisibility(View.INVISIBLE);
button5.setVisibility(View.INVISIBLE);
button6.setVisibility(View.INVISIBLE);
button7.setVisibility(View.INVISIBLE);
button8.setVisibility(View.INVISIBLE);
button9.setVisibility(View.INVISIBLE);
button10.setVisibility(View.INVISIBLE);
button11.setVisibility(View.INVISIBLE);
button12.setVisibility(View.INVISIBLE);
button13.setVisibility(View.INVISIBLE);
button14.setVisibility(View.INVISIBLE);
button15.setVisibility(View.VISIBLE);
button16.setVisibility(View.INVISIBLE);
break;
case 16:
button1.setVisibility(View.VISIBLE);
button2.setVisibility(View.INVISIBLE);
button3.setVisibility(View.INVISIBLE);
button4.setVisibility(View.INVISIBLE);
button5.setVisibility(View.INVISIBLE);
button6.setVisibility(View.INVISIBLE);
button7.setVisibility(View.INVISIBLE);
button8.setVisibility(View.INVISIBLE);
button9.setVisibility(View.INVISIBLE);
button10.setVisibility(View.INVISIBLE);
button11.setVisibility(View.INVISIBLE);
button12.setVisibility(View.INVISIBLE);
button13.setVisibility(View.INVISIBLE);
button14.setVisibility(View.INVISIBLE);
button15.setVisibility(View.INVISIBLE);
button16.setVisibility(View.VISIBLE);
break;
}
// the auto-random will be faster and faster
// correct me if i do it wrong too
}
};
ms=ms-20; //20ms faster
mHandler.postDelayed((Runnable) this, ms);
mHandler.postDelayed(mUpdateTimeTask, 100);
}
}
在我搜索了问题所在后,我发现强制关闭原因处理程序方法是正确的:
final Handler mHandler = new Handler();
int ms=2000; //2secs.
final Runnable mUpdateTimeTask = new Runnable() {
public void run() {
//Do random logic
}
};
ms=ms-20; //20ms faster
mHandler.postDelayed((Runnable) this, ms);
mHandler.postDelayed(mUpdateTimeTask, 100);
}
}
如果你疯了,请看我的代码,我很抱歉,因为我需要帮助人们获得更多的经验来修复当前的问题,或者任何人都需要一些示例代码来替换处理程序方法
提前感谢。定义一个Runnable:不是有效的Java。要么删除它,要么注释掉它
此外,要清理代码,请执行以下操作:
Button[] buttons = new Button[]{ button1, button2, ... button15, button16 };
// fill in the other buttons above
Random generator = new Random();
number = generator.nextInt(16);
for( int i=0; i<buttons.length; i++ ) {
if( i == number )
buttons[i].setVisibility( View.VISIBLE );
else
buttons[i].setVisibility( View.INVISIBLE );
}
在该上下文中,这可能是活动,它不是可运行的。相反,只要做:
mHandler.postDelayed( mUpdateTimeTask, ms );
并删除第二行。您还可以将runnable本身发布到run方法中的处理程序:
数组和循环就是为了这个原因而产生的……这段代码很有效,谢谢你的人!但是我可以使ms>0延迟不随机停止吗?
mHandler.postDelayed( mUpdateTimeTask, ms );
final Handler mHandler = new Handler();
int ms=2000;
final Runnable mUpdateTimeTask = new Runnable() {
public void run() {
//Do random logic
ms -= 20;
if( ms > 0 ) // stop when delay is less than 0.
mHandler.postDelayed( this, ms );
}
};
// run this in a method.
mHandler.postDelayed(mUpdateTimeTask, ms); // post the first