gpt4 book ai didi

java - 处理程序不更新 GUI

转载 作者:太空宇宙 更新时间:2023-11-04 11:22:52 25 4
gpt4 key购买 nike

当我收到 SOS 时,如果我在一段时间内单击按钮,我希望能够取消短信发送。

时间在 GUI 上配置,应为 int delay = Integer.parseInt(cancelTime.getText().toString())*1000; 例如 10x1000 = 10 秒单击按钮。

if(data.equals("SOS\r\n")) {

startTime = System.currentTimeMillis();

Handler handler = new Handler();
int delay = Integer.parseInt(cancelTime.getText().toString())*1000;

handler.postDelayed(new Runnable() {
@Override
public void run() {
double elapsedTime = ((System.currentTimeMillis() - startTime)/1000);
alertButton.setText("CANCEL THE SOS: " + elapsedTime);
alertButton.setBackgroundColor(Color.parseColor("#FF0000"));

alertButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
wasCanceled = true;
}
});

if(!wasCanceled)
{
//SEND SMS
}
else if(wasCanceled)
{
alertButton.setText("CANCELED!!");
alertButton.setTextColor(Color.parseColor("#008000"));
}
}
}, delay);
}
}

我的问题是 GUI 没有更新。它仅在我单击按钮时更新。

            alertButton.setText("CANCEL THE SOS: " + elapsedTime);
alertButton.setBackgroundColor(Color.parseColor("#FF0000"));

此外,我希望时间减少 10...9... 直到 0。Atm 正在增加。

最佳答案

尝试这样的事情:

if ("SOS\r\n".equals(data))
{
final long startTime = System.currentTimeMillis();
final Handler handler = new Handler();
final int delay = Integer.parseInt(cancelTime.getText()) * 1000;
final long endTime = startTime + delay;
wasCanceled = false;
alertButton.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view)
{
wasCanceled = true;
}
});
final Runnable r = new Runnable()
{
@Override
public void run()
{
final double remainingTime = (endTime - System.currentTimeMillis()) / 1000d;
alertButton.setText("CANCEL THE SOS: " + elapsedTime);
alertButton.setBackgroundColor(Color.parseColor("#FF0000"));
if(wasCanceled)
{
alertButton.setText("CANCELED!!");
alertButton.setTextColor(Color.parseColor("#008000"));
return;
}
else if(remainingTime < 0)
{
// SEND SMS
return;
}
handler.postDelayed(r, 1000);
}
};
handler.postDelayed(r, 1000);
}

由于它在执行某些操作后重新postDelayed()本身,您可能希望将内部延迟从1000降低到800或类似的东西......

关于java - 处理程序不更新 GUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44720356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com