2013-02-24 25 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