我有一个很短的倒计时(最少3秒,最多10秒),用来控制屏幕上显示新的数学问题。每隔1秒,倒计时应该检查用户是否在编辑文本中输入了正确答案。以下是我的代码:
private void startQuestionTimer()
{
long startTime = DataHolder.getQuestionTime()*1000;
questionTimer = new CountDownTimer(startTime, 1000) {
@Override
public void onTick(long millisUntilFinished) {
//continually check user's input into the EditText
//if input is ever equal to actualIntAnswer, reset the timer and EditText
//then display another math problem
int givenAnswer = Integer.parseInt(userAnswer.getText().toString());
if (givenAnswer == actualIntAnswer)
{
questionTimer.cancel();
userAnswer.getText().clear();
displayNewMathProblem();
questionTimer.start();
}
}
@Override
public void onFinish() {
displayNewMathProblem();
if (!testTimeExpired)
{
questionTimer.start();
}
else
{
questionTimer.cancel();
}
}
}.start();
}
我遇到的问题是,这个倒计时程序一创建,应用程序就会崩溃。出于某种原因,int givenaswer=Integer。parseInt(userAnswer.getText()。toString())
似乎使应用程序崩溃,我认为这是因为倒计时无法在1秒内完成所有这些。我尝试将其拆分为两种方法,如下所示:
private int givenAnswer;
private String givenAnswerToString()
{
return userAnswer.getText().toString();
}
private void givenAnswerToInt()
{
givenAnswer = Integer.parseInt(givenAnswerToString());
}
然后像这样调用onTick()中的givenAnswerToInt():
@Override
public void onTick(long millisUntilFinished) {
givenAnswerToInt();
if (givenAnswer == actualIntAnswer)
{
questionTimer.cancel();
userAnswer.getText().clear();
displayNewMathProblem();
questionTimer.start();
}
}
这到底是怎么回事?这是一个像我认为的那样试图在短时间内做太多事情的问题,还是完全是另一回事?我能做些什么来解决这个问题?
我nteger.parseInt
可以抛出一个NumberFormatExc0019
,如果没有捕获,这将导致应用程序突然停止。
当您作为parseInt
的参数传递的String
没有
这种情况在代码中几乎是瞬间发生的,这是因为EditText.getText()
只是返回"
,因为用户没有键入任何代码
你所能做的就是用一个try-cat
语句管理异常:
try {
int givenAnswer = Integer.parseInt(userAnswer.getText().toString());
} catch (NumberFormatException e) {
// return or do something else to deal with the problem
}
if(givenAnswer == actualIntAnswer){
...
}
...
我开始学习android,我的第一个练习是计算器。在做适当的计算器之前,我计划创建一个非常基本的应用程序,用户只需通过EditText输入2个数字,用按钮选择算术运算,并在按下“igual”按钮时在TextView中获得结果。 我的想法是声明2个字符串(sinput1 在我开始编写操作的工作方式之前,所有布局看起来都运行良好,但是每次我运行应用程序(使用手机或模拟器)时,当我按EditText输入
我正在使用SharedPref在活动之间传递字符串。我正试图使我的代码更有效,但我有一个我无法解决的问题。 MainActivity.Class中的我的代码: @override protected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(r.layout.
这就是它崩溃的地方 01-12 13:44:12.571 296 26-29688/ca.dti.grounded.app E/OtherService:AsynchChecker 287:73 java.lang.IllegalStateException:Parcel已完成!在android.os.binderproxy.transactNative(本机方法)在android.os.bind
如果设备Google Play services版本没有更新,在我的应用程序上使用以下代码会导致应用程序崩溃。 它在Android OS版本4.2.2和Google Play Services版本3.1.58的设备上崩溃(为了处理Google Play Services可用性检查,我特意降低了它的等级)。
注意:在我添加广告之前,我的应用程序运行良好,使用相同的方法 当我试图将adview添加到我的应用程序时,它会使我的应用程序崩溃,所以我删除了它,但仍然给我这个这是logcat 10-12 21:33:19.765 4993-4993/com。fm360。almorfis E/AndroidRuntime:致命异常:主进程:com。fm360。阿尔莫菲斯,PID:4993爪哇。lang.Runti
我正试图在Android Studio中制作一个可以“记住”我的成绩和科目的应用程序。目前,我正在开发一个允许我制作主题的系统。 编译后,没有错误,我打开应用程序,应用程序崩溃,我收到一个错误:“尝试在空对象引用上调用虚拟方法” 我认为字符串数组与此有关。 这是我的代码: 提前谢谢!