【问题标题】:Two toast or normal messages ( one after another ) in chronometer app计时器应用程序中的两条吐司或正常消息(一个接一个)
【发布时间】:2021-07-05 20:36:08
【问题描述】:

我不太擅长 Java 和 Android,但我想构建一个简单的计时器应用程序。 我已经创建了开始、停止/暂停、重置按钮并且它可以工作,但是我想在固定时间(例如在 00:15 秒)显示消息/文本(“好”),然后消息必须隐藏并且新消息必须在 00:28 秒(“超级”)显示并隐藏。 我正在粘贴 MainActivity.java 中的部分代码。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(layout.activity_main);
    chronometer = findViewById(id.chronometer);
    chronometer.setFormat("(%m,%s)");
    chronometer.setBase(SystemClock.elapsedRealtime());
    chronometer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
        @Override
        public void onChronometerTick(Chronometer chronometer) {
            if ((SystemClock.elapsedRealtime() - chronometer.getBase()) >= 15000) {

                Toast.makeText(MainActivity.this, "Good!", Toast.LENGTH_SHORT).show();
            }
            if ((SystemClock.elapsedRealtime() - chronometer.getBase()) >= 28000) {

                Toast.makeText(MainActivity.this, "Super!", Toast.LENGTH_SHORT).show();
            }
        }
    });
}

此代码当前在 00:15 秒生成第一条消息,但该消息一直停留到 00:35-6 秒,然后显示第二条消息,但两条消息开始随机显示。

我尝试将 if ((SystemClock.elapsedRealtime() - chronometer.getBase()) >= 15000) 更改为 if ((SystemClock.elapsedRealtime() - chronometer.getBase()) == 15000),但这根本不起作用。

我已经到处搜索并做了几天的测试,但没有关于如何做的结果。 我也用文本视图测试过,但不好。 如果有人可以帮助我解决如何通过 toast 消息或文本视图或其他方式解决此问题。 非常感谢您。

【问题讨论】:

    标签: android textview message toast chronometer


    【解决方案1】:

    这是因为您多次显示 toast 消息。对于每次1500 毫秒过去后,(SystemClock.elapsedRealtime() - chronometer.getBase()) >= 15000 始终为真。

    如果您只是想在 15 秒时显示吐司,那么您可以找出计时器已标记的秒数并检查它是否等于 15。有很多方法这样做,但类似:

    ((SystemClock.elapsedRealtime() - it.getBase()) / 1000) * 1000 == 15000L
    

    【讨论】:

      猜你喜欢
      • 2020-01-03
      • 1970-01-01
      • 1970-01-01
      • 2017-04-14
      • 2015-01-26
      • 1970-01-01
      • 2021-09-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多