Android中的计时器使用ImageButton启动和停止

时间:2015-08-25 18:55:54

标签: android timer

我一直在研究一个Android程序,但是我的计时器有问题而且我正在尝试使用它但似乎无法正确使用,此时的任何帮助都将受到高度赞赏。

我的计时器从60 -- to 0开始,这就是我想要的。现在我用按钮来显示开始和停止。现在我想使用暂停和播放的ImageButtons。请问这是我被困住的地方,任何帮助都将是一个很好的缓解我试图寻找一些信息阅读,但没有找到。

  

总结一下我想要实现的目标

     
      
  1. 我想使用ImageButtons(暂停和播放)来调用这些功能,一旦暂停游戏暂停和On Play我继续
  2.   
CountDownTimer timer = new CountDownTimer(60000, 1000) {
                @Override
                public void onTick(long millisUntilFinished) {
                    time= millisUntilFinished;
                    timerTextView.setText("Time Remaining: " + millisUntilFinished / 1000);
                    timerTextView.setTextSize(10);

                }

                @Override
                public void onFinish() {

                    timerTextView.setText("TIMES UP");
                    timerTextView.setTextSize(10);


                }
            }.start();

    @Override
    public void onBackPressed() {
        timer.cancel();
        super.onBackPressed();
    }




    @Override
    public void onPause() {
        super.onPause();
        timer.cancel();
        ImageButton pause = (ImageButton) findViewById(R.id.pause);
        pause.setVisibility(View.INVISIBLE);
        ImageButton play = (ImageButton) findViewById(R.id.play);
        play.setVisibility((View.VISIBLE));
        EditText input = (EditText) findViewById(R.id.answerField);
        input.setEnabled(false);
        timerTextView.setText("Game Paused");
    }
    public void play(View view){
        ImageButton pause= (ImageButton)findViewById(R.id.pause);
        pause.setVisibility(View.VISIBLE);
        ImageButton play= (ImageButton)findViewById(R.id.play);
        play.setVisibility((View.INVISIBLE));
        TextView outcome = (TextView) findViewById(R.id.outcome);
        outcome.setText("");
        EditText input= (EditText)findViewById(R.id.answerField);
        input.setEnabled(true);
        CountDownTimer timer= new CountDownTimer(time, 1000) {

            public void onTick(long millisUntilFinished) {
                time= millisUntilFinished;
                //text1.setTextColor(Color.parseColor("#FFFFFF"));
                timerTextView.setText("Time Remaining: " + millisUntilFinished / 1000);
            }

            public void onFinish() {
                timerTextView.setText("TIME UP");

            }

        }.start();

    }


     <ImageButton
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:src="@drawable/ic_play_white_18dp"
            android:background="@drawable/circle"
            android:id="@+id/play"
            android:elevation="4dp"
            android:onClick="play"
            android:layout_alignTop="@+id/pause"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true" />

        <ImageButton
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:src="@drawable/ic_pause_white_18dp"
            android:background="@drawable/circle"
            android:id="@+id/pause"
            android:elevation="4dp"
            android:onClick="pause"
            android:layout_below="@+id/questionField"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true" />


LogCat Errors;

    view class android.widget.ImageButton with id 'play'
                at android.view.View$1.onClick(View.java:4007)
                at android.view.View.performClick(View.java:4780)
                at android.view.View$PerformClick.run(View.java:19866)
                at android.os.Handler.handleCallback(Handler.java:739)
                at android.os.Handler.dispatchMessage(Handler.java:95)
                at android.os.Looper.loop(Looper.java:135)
                at android.app.ActivityThread.main(ActivityThread.java:5257)
                at java.lang.reflect.Method.invoke(Native Method)
                at java.lang.reflect.Method.invoke(Method.java:372)
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
         Caused by: java.lang.NoSuchMethodException: play [class android.view.View]
                at java.lang.Class.getMethod(Class.java:664)
                at java.lang.Class.getMethod(Class.java:643)
                at android.view.View$1.onClick(View.java:4000)
                at android.view.View.performClick(View.java:4780)
                at android.view.View$PerformClick.run(View.java:19866)
                at android.os.Handler.handleCallback(Handler.java:739)
                at android.os.Handler.dispatchMessage(Handler.java:95)
                at android.os.Looper.loop(Looper.java:135)
                at android.app.ActivityThread.main(ActivityThread.java:5257)
                at java.lang.reflect.Method.invoke(Native Method)
                at java.lang.reflect.Method.invoke(Method.java:372)
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

1 个答案:

答案 0 :(得分:0)

首先,崩溃的主要原因是当你找到视图......

如果您要在Button中声明play(),则必须声明按钮:

ImageButton pause= (ImageButton)view.findViewById(R.id.pause);

同时使用EditTextTextView

完成此操作后,只需点击IDE上的运行并告诉我问题是什么......

我也读过这个:

  

引起:java.lang.NoSuchMethodException:play [class android.view.View]

你的Play()方法叫做?,你可以发布更多代码吗?

BTW学会清除你的代码,无法阅读/理解...如果你想要来自SO甚至其他论坛的人,只需要清理一点......否则没有人会帮助你。