簡體   English   中英

按下按鈕后每 1.5 秒調用一次函數

[英]Calling a function every 1.5 seconds after a button is pressed

我現在創建的函數每次單擊 android 應用程序中的按鈕並在 TextView 中顯示結果時,都會為我提供一個介於 0.8 和 1.2 之間的隨機數。 但是,我希望此功能每 1.5 秒不斷給我一個新數字,而不必連續單擊按鈕以獲得新結果。 我該怎么做呢?

下面顯示了我想每 1.5 秒調用一次的函數。

public void generate(View view) {
    double min = 0.8;
    double max = 1.2;
    Random rand = new Random();
    double number = rand.nextDouble()* max;
    TextView myText = (TextView)findViewById(R.id.textView_RanNum);
    String myString = String.valueOf(number);
    myText.setText(myString);
}

所有幫助將不勝感激。

您可以使用處理程序/可運行:

public class MainActivity extends AppCompatActivity {

Handler handler;
Button buttonStart, buttonStop;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    handler = new Handler();
    buttonStart = findViewById(R.id.button);
    buttonStop = findViewById(R.id.button2);

    buttonStart.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            runnable.run();
        }
    });
    buttonStop.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            handler.removeCallbacks(runnable);
        }
    });

}

public Runnable runnable = new Runnable() {
    public void run() {
        generate();
        handler.postDelayed(runnable, 1500); // 1500 miliseconds
    }};

public void generate() {
    double min = 0.8;
    double max = 1.2;
    double number;
    Random rand = new Random();
    TextView myText = findViewById(R.id.textView_RanNum);

    number = rand.nextDouble() * max;
    String myString = String.valueOf(number);
    myText.setText(myString);
  }

}

您可以使用 Android 的 Handler 類來做到這一點。

public class MainActivity extends AppCompatActivity {
    Button btn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn = findViewById(R.id.btn);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Handler myHand = new Handler();
                myHand.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                      generate();
                    }
                }, 1500);
            }
        });
    }

    public void generate() {
        double min = 0.8;
        double max = 1.2;
        Random rand = new Random();
        double number = rand.nextDouble() * max;
        TextView myText = (TextView) findViewById(R.id.textView_RanNum);
        String myString = String.valueOf(number);
        myText.setText(myString);
    }
}

在此處閱讀有關處理程序的更多信息: https : //developer.android.com/reference/android/os/Handler

暫無
暫無

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

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