java - Android/java - 在 onClick 中使用计时器循环

标签 java android loops timer onclick

这是我的第一个问题,如果格式不正确,我深表歉意。 我正在使用 java 并试图让一个计时器在单击按钮时在 while 循环内运行。单击开始按钮后,结果应该会导致 .setText 定期更改框中的文本。

protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    startBtn = findViewById(R.id.startButton);
    item = findViewById(R.id.Rule);

    startBtn.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            while(true)
            {
                Timer();
            }
        }
    });
}
public void Timer()
{
        Handler handler = new Handler();
        handler.postDelayed(new Runnable() 
        {
            @Override
            public void run()
            {
                item.setText()
            }
        }, 5000);
}`

问题是,当按下开始按钮时,似乎什么也没有发生。 或者我也尝试重复定时器调用。虽然这有效,但它只会运行一次计时器调用,然后结束点击功能。

protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    startBtn = findViewById(R.id.startButton);
    item = findViewById(R.id.Rule);

    startBtn.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            Timer();
            Timer();
            Timer();
            Timer();
            Timer();
        }
    });
}

public void Timer()
{
    Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            item.setText(ruleOut(rulesList));
        }
    }, 5000);
}

我无法为此找到任何东西或解决任何问题,因此非常感谢您的帮助。我确定我会遗漏一些明显的东西。谢谢。

最佳答案

您正在做的是同时运行所有计时器,因此所有计时器都同时执行尝试运行此代码

protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    startBtn = findViewById(R.id.startButton);
    item = findViewById(R.id.Rule);

    startBtn.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            for(int i = 5000; true; i= i+5000){
                Timer(i);
            }
        }
    });
}
public void Timer(int time)
{
    Handler handler = new Handler();
    handler.postDelayed(new Runnable()
    {
        @Override
        public void run()
        {
            item.setText(String.valueOf(time));
        }
    }, time);
}`

关于java - Android/java - 在 onClick 中使用计时器循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51892414/

相关文章:

java - 如何打印出 RestAssured 尝试连接到 Web 服务的 URL?

java - OpenNLP 与斯坦福 CoreNLP

android - 最简单的对话框

javascript - 如何计算每个条件的循环次数并将其存储到数组中?

最终好奇的Java未初始化变量

Java线程非法状态异常

javascript - 在 JavaScript 中,是否可以检测 Android 和 iOS 浏览器中的屏幕何时关闭

android - Actions on Google Android Auto 支持

algorithm - Floyd-Warshall 算法 - 为什么这个顺序?

javascript - 根据值合并两个不同长度的数组对象