将点击的按钮名称传递给Android中的其他类

时间:2013-02-24 03:24:53

标签: java android android-intent countdowntimer

我是android的新手(并不是很热,但试图学习)。

我正在创建一个具有多个按钮的应用程序,这些按钮在单击时启动倒数计时器。

在具有这些按钮的活动上,以下代码用于启动计时器:

    //Button 1 Start On Click
    final CountDown buttonOneTimer = new CountDown(15000,1000);
    buttonOne.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            buttonOneTimer.start();
        }
    });

    //Button 2 Start On Click
    final CountDown buttonTwoTimer = new CountDown(15000,1000);
    buttonTwo.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            buttonTwoTimer.start();
        }
    });

我的CountDown类看起来像这样:

public class CountDown extends CountDownTimer {


    public CountDown (long millisInFuture, long countDownInterval) {
        super(millisInFuture, countDownInterval);
    }


    @Override
    public void onFinish() {
        System.out.println("Timer Completed.");
        ****NAMEOFTHEBUTTONCLICKED****.setText("Timer Completed.");
    }

    @Override
    public void onTick(long millisUntilFinished) {
        ****NAMEOFTHEBUTTONCLICKED****.setText((millisUntilFinished/1000)+"");
        System.out.println("Timer  : " + (millisUntilFinished/1000));
    }


}

我正在尝试将按钮的名称压入类中,以便我可以将按钮上的文本设置为倒计时。

我确定我做错了各种各样的事情,或者有更好的方法可以做到 - 所以如果你看到我可以改进的地方 - 随意批评我!

我读过tutorial here然而它在当前类中有一个'内部类'(我相信它就是所谓的?)。我的一个朋友说很少做,只是创建一个单独的类,如CountDown。如果我以与教程中相同的方式执行此操作,我可以让计时器工作(通过硬编码按钮名称,上面显示 * NAMEOFTHEBUTTONCLICKED * ,这意味着它只有适用于该按钮) - 但我仍然需要弄清楚如何将该类传递给按钮名称,这样我就不必为每个计时器编写一个单独的类。

这会通过Extras完成吗?我很难找到我的具体问题的更多信息。任何帮助表示赞赏!!

1 个答案:

答案 0 :(得分:1)

尝试将按钮实例传递给Timer:

public class CountDown extends CountDownTimer {

    Button button;
    public CountDown (long millisInFuture, long countDownInterval, Button button) {
        super(millisInFuture, countDownInterval);
        this.button = button;
    }


    @Override
    public void onFinish() {
        System.out.println("Timer Completed.");
        button.setText("Timer Completed.");
    }

    @Override
    public void onTick(long millisUntilFinished) {
        button.setText((millisUntilFinished/1000)+"");
        System.out.println("Timer  : " + (millisUntilFinished/1000));
    }

}

然后这样打电话:

//Button 1 Start On Click
    final CountDown buttonOneTimer = new CountDown(15000,1000,buttonOne);
    buttonOne.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            buttonOneTimer.start();
        }
    });