chronometer 应用程序中的两条 toast 或普通消息(一个接一个)
Two toast or normal messages ( one after another ) in chronometer app
我不太擅长 Java 和 Android,但我想构建一个简单的计时器应用程序。
我创建了 Start、Stop/Pause、Reset 按钮,它可以工作,但我想在固定时间(例如 00:15 秒)显示 message/text(“好”),那么消息必须隐藏,并且新消息必须在 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 消息或文本视图或其他方式解决此问题。
非常感谢您。
这是因为您多次显示 toast 消息。每次经过 1500
毫秒后,(SystemClock.elapsedRealtime() - chronometer.getBase()) >= 15000
始终为真。
如果您只想在 15 秒时显示祝酒词,那么您可以找出计时表滴答的秒数并检查它是否等于 15。有很多方法可以做到这一点,但类似于:
((SystemClock.elapsedRealtime() - it.getBase()) / 1000) * 1000 == 15000L
我不太擅长 Java 和 Android,但我想构建一个简单的计时器应用程序。 我创建了 Start、Stop/Pause、Reset 按钮,它可以工作,但我想在固定时间(例如 00:15 秒)显示 message/text(“好”),那么消息必须隐藏,并且新消息必须在 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 消息或文本视图或其他方式解决此问题。 非常感谢您。
这是因为您多次显示 toast 消息。每次经过 1500
毫秒后,(SystemClock.elapsedRealtime() - chronometer.getBase()) >= 15000
始终为真。
如果您只想在 15 秒时显示祝酒词,那么您可以找出计时表滴答的秒数并检查它是否等于 15。有很多方法可以做到这一点,但类似于:
((SystemClock.elapsedRealtime() - it.getBase()) / 1000) * 1000 == 15000L