【发布时间】:2013-11-03 14:50:59
【问题描述】:
我一直在我的应用程序上编写一个计时器,这样当你点击一个按钮时,文本会显示一个以 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){
}
}
});
}
});
}
【问题讨论】:
-
发布堆栈跟踪,看起来你有一些遗漏
{brakects -
发布从您的应用崩溃到结束的 logCat。
-
您的 LogCat 说了什么(当您的应用程序崩溃时,您应该会收到一堆红色错误消息)?如果可以,还可以使用调试器单步执行(在您的 readyBtn 单击侦听器中的第一条语句上设置断点)。这将帮助您了解导致错误的确切陈述,这也将使我们能够更有效地帮助您。
-
您犯的最大错误是在您的 readyBtn.onClickListener() 方法中初始化所有指针。特别是重新初始化 readyBtn 指针。
-
你可以使用处理程序而不是线程
标签: android timer crash clock stopwatch