java - 单击按钮时 Android 倒计时器应用程序崩溃

标签 java android sdk timer countdowntimer

我刚刚开始在 Android SDK 中进行编码,这是我第一次尝试倒计时器。我已使用 setOnClickListener() 将计时器设置为在按下按钮时启动。当我单击按钮时,计时器没有启动,但应用程序停止工作。设备显示一条消息,指出应用程序已停止工作。

我编写了一种将时间格式化为分钟和秒的方法。我已经在 CountDownTimer 的 onTick() 方法中设置了调用。

我已在下面发布了我的代码。请看一下并指出问题出在哪里以及该怎么做。非常感激。

package com.example.day1;

import android.app.Activity;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.View;
import android.widget.Button; 
import android.widget.TextView;
public class MainActivity extends Activity {


TextView Timer;//Textview to display the timer
    //This is the method to format the time into minutes and seconds 
public String formatTime(long millis)
{
    String output="00:00";
    long second=millis/1000;
    long minute=second/60;
    second=second%60;
    minute=minute%60;
    String sec=String.valueOf(second);
    String min=String.valueOf(minute);
    output=min+":"+sec;
    return output;
}

@Override
 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.countdown);
    Timer=(TextView) findViewById(R.id.text1);
    Button button1=(Button)findViewById(R.id.button1);
    button1.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {


    new CountDownTimer(60000,1000)
    {
        public void onTick(long millisUntilFinished){
    Timer.setText(formatTime(millisUntilFinished));
        }
    public void onFinish()
    {
        onStop();
    }
    }.start();
    }
         });
     }
         }

最佳答案

(1) 您的应用程序崩溃是因为您没有使用 OnClickListener 实现您的 Activity:您需要扩展 Activity onclicklistener evet 的方法

这是代码

package com.example.day1;

import android.app.Activity;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.View;
import android.widget.Button; 
import android.widget.TextView;

///////////////////The solution is fix here///////////////
public class MainActivity extends Activity implements View.OnClickListener {
///////////////////End of solution//////////

TextView Timer;//Textview to display the timer
    //This is the method to format the time into minutes and seconds 
public String formatTime(long millis)
{
    String output="00:00";
    long second=millis/1000;
    long minute=second/60;
    second=second%60;
    minute=minute%60;
    String sec=String.valueOf(second);
    String min=String.valueOf(minute);
    output=min+":"+sec;
    return output;
}

@Override
 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.countdown);
    Timer=(TextView) findViewById(R.id.text1);
    Button button1=(Button)findViewById(R.id.button1);
    button1.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {


    new CountDownTimer(60000,1000)
    {
        public void onTick(long millisUntilFinished){
    Timer.setText(formatTime(millisUntilFinished));
        }
    public void onFinish()
    {
        onStop();
    }
    }.start();
    }
         });
     }
         }

关于java - 单击按钮时 Android 倒计时器应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20451044/

相关文章:

使用 PROC_THREAD_ATTRIBUTE_PREFERRED_NODE 或 PROC_THREAD_ATTRIBUTE_GROUP_AFFINITY 时的 CreateProcess 问题

android - 没有 contentProvider 的 INSTALL_FAILED_CONFLICTING_PROVIDER

java - 使用 Oracle SQL Developer/Java 按计划时间运行报告并通过电子邮件发送报告?

java - 将 bcrypt 添加到 Spring Boot Security

java - 读取要在 JLabel 中显示的 "ImageIO.read"的图像路径

c++ - 静态链接具有较新平台 SDK 的库,可能吗?

java - Maven 原型(prototype) : Validate artifactId or groupId

java - 如何实现当网络或WiFi连接时对话框消失。反之亦然?

android - @UnsupportedAppUsage 注解描述了什么

android - SQLite 查询构建中的错误