2013-02-24 22 views
1

我是新来的android(并没有那么热,但试图学习)。传递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(); 
     } 
    }); 

我的倒计时类看起来是这样的:

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 *上面,这意味着它只适用于该按钮)想知道如何传递这个类的按钮名称,所以我不必为每个定时器编写一个单独的类。

这是否会通过额外?我很难找到有关我的具体问题的更多信息。任何帮助表示赞赏!

回答

1

尝试按钮实例假冒的计时器:

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(); 
     } 
    }); 
+1

你,我的朋友都是赢家!我知道这是这样的 - 但我还是新的,我只是不知道如何完成!谢谢!! – Hanny 2013-02-24 03:41:31

+0

不客气:-) – 2013-02-24 03:44:04