我已经在我的应用程序上编写了一个计时器,以便当您按下按钮时,文本会显示一个以0.1秒为增量的时间。
我虽然编码正确,但事实证明,只要我按手机上的“就绪”按钮,应用程序就会崩溃...有人可以提示我出什么问题了。我认为启动计时器可能会有所帮助?
我的OnCreate()
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_double_player);
Button readyBtn = (Button) findViewById(R.id.readyBtn);
readyBtn.setOnClickListener(new View.OnClickListener(){
public void onClick(View arg0) {
Button readyBtn = (Button) findViewById(R.id.readyBtn);
Spinner selectorLeft = (Spinner) findViewById(R.id.selectorLeft);
Spinner selectorRight = (Spinner) findViewById(R.id.selectorRight);
ImageView narLeft = (ImageView) findViewById(R.id.narwhalleft);
ImageView narRight = (ImageView) findViewById(R.id.narwhalRight);
selectorLeft.setVisibility(RelativeLayout.GONE);
selectorRight.setVisibility(RelativeLayout.GONE);
readyBtn.setVisibility(RelativeLayout.GONE);
final TextView text = (TextView) findViewById(R.id.timerText);
final Handler handler;
text.setText(0);
handler = new Handler();
Runnable runnable = new Runnable(){
boolean ready = true;
int number = 0;
@Override
public void run(){
while(ready){
try{
Thread.sleep(100);
}
catch(InterruptedException e){
e.printStackTrace();
}
handler.post(new Runnable(){
@Override
public void run(){
number+=0.1;
text.setText(String.valueOf(number));
}
});
}
}
};
new Thread(runnable).start();
narRight.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View arg0) {
int clicksNeeded = 100;
boolean rightWon = false;
int clicksClickedRight = 0;
clicksClickedRight = clicksClickedRight + 1;
if(clicksClickedRight == clicksNeeded){
rightWon = true;
}
if(rightWon == true){
}
}
});
narLeft.setOnClickListener(new View.OnClickListener(){
public void onClick(View arg0) {
int clicksNeeded = 100;
boolean leftWon = false;
int clicksClickedLeft = 0;
clicksClickedLeft = clicksClickedLeft + 1;
if(clicksClickedLeft == clicksNeeded){
leftWon = true;
}
if(leftWon == true){
}
}
});
}
});
}
最佳答案
我可以在您的行中看到一个问题:
text.setText(0);
函数的声明为
setText(int resid)
,因此它尝试搜索ID为0
的字符串资源,但找不到,堆栈跟踪错误:android.content.res.Resources$NotFoundException: String resource ID #0x0
因此,将您的行替换为:
text.setText(String.valueOf(0));
第二件事,您已将数字变量声明为int:
int number = 0;
但是,您要为其添加浮点数:
number+=0.1;
因此,将其声明为
float number = 0;
。要将数字四舍五入到小数点后,请使用以下技巧,首先对数字进行加倍处理,将其转换为int以除去小数点后再转换回浮点数:
float displaynumber = (float)((int)(number * 10.0))/10.0f;
关于android - Android SDK计时器不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19754205/