android - Android SDK计时器不起作用

标签 android timer crash clock stopwatch

我已经在我的应用程序上编写了一个计时器,以便当您按下按钮时,文本会显示一个以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/

相关文章:

android - for循环里面的for循环错误

Android:同时使用 FLAG_FULLSCREEN 和 TYPE_KEYGUARD

python - 在 python 中以特定时间间隔运行任务

java - android studio 项目到 javaFX?

android - 使用 Android 的客户端 key 或应用程序 ID 查找解析用户名

python - 让线程等待定时器或信号?

c# - WPF中GUI的定时刷新

c - 由于对齐差异,该程序是否仅在 x32 上崩溃?

Android Studio - 如何增加分配的堆大小

java - 当文本字段留空时,为什么我的程序崩溃?