簡體   English   中英

將點擊按鈕的名稱傳遞給Android中的其他類

[英]Pass the name of button clicked to different class in 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();
        }
    });

我的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));
    }


}

我試圖將按鈕的名稱輸入到班級中,以便可以將按鈕上的文本設置為倒數。

我確定我做錯了各種事情,或者可能有更好的方法來做-因此,如果您看到我可以改進的地方,請隨時批評我!

我在這里閱讀了本教程,但是在當前類中有一個“內部類”(我相信這是所謂的?)。 我的一個朋友說,很少這樣做,只創建一個單獨的類,例如CountDown。 如果我按照本教程中的方法進行操作,則可以使計時器正常工作(通過硬編碼上面顯示* NAMEOFTHEBUTTONCLICKED *的按鈕名稱,這意味着該按鈕僅適用於該按鈕)-但我仍然需要弄清楚如何通過該類的按鈕名稱,因此我不必為每個計時器編寫單獨的類。

可以通過Extras完成嗎? 我很難找到有關我的特定問題的更多信息。 任何幫助表示贊賞!

嘗試將按鈕實例傳遞給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();
        }
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM