java - 使用 Chronometer - 在 setText 之后,Textview 只显示文本一秒钟
问题描述
我正在创建一个时间跟踪应用程序,并希望有一个可以启动/暂停/重置的秒表。当我按下“结束一天并保存”按钮时,我希望应用程序在下面的 TevtView 中显示经过的小时/分钟/秒。它确实如此,但只有一秒钟,然后它就消失了。我哪里错了?
我尝试创建一个仅用于更新 TextView 的新方法,但它根本不显示。如果有帮助,我必须用于该项目的最低 SDK 版本是 23。
public void stopAndSaveChronometer(View v) {
if (running) {
chronometer.stop();
running = false;
time = SystemClock.elapsedRealtime() - chronometer.getBase();
h = (int) (time / 3600000);
m = (int) (time - h * 3600000) / 60000;
s = (int) (time - h * 3600000 - m * 60000) / 1000;
Intent secondsIntent = new Intent(this,
trackTodayActivity.class).putExtra("saved seconds", s);
startActivity(secondsIntent);
Intent minsIntent = new Intent(this,
trackTodayActivity.class).putExtra("saved mins", m);
startActivity(minsIntent);
Intent hoursIntent = new Intent(this,
trackTodayActivity.class).putExtra("saved hours", h);
startActivity(hoursIntent);
Bundle extras = getIntent().getExtras();
if (extras != null) {
seconds = extras.getInt("saved seconds", s);
minutes = extras.getInt("saved minutes", m);
hours = extras.getInt("saved hours", h);
}
// set up Strings to hold the times (already initialised as global variables)
printseconds = Integer.toString(s);
printminutes = Integer.toString(m);
printhours = Integer.toString(h);
// set up String to display in TextView (already initialised as global variable)
displayTheTime = (printhours + " hours, ")
+ (printminutes + " minutes, ")
+ (printseconds + " seconds");
// display the times in the Textview
showMyTime = (TextView) findViewById(R.id.printsavedTime);
showMyTime.setText(displayTheTime);
}
}
}
解决方案
为什么要发射 3 次trackTodayActivity
?这个活动有用吗?
为了显示结果,这应该足够了:
public void stopAndSaveChronometer(View v) {
if (running) {
chronometer.stop();
running = false;
time = SystemClock.elapsedRealtime() - chronometer.getBase();
h = (int) (time / 3600000);
m = (int) (time - h * 3600000) / 60000;
s = (int) (time - h * 3600000 - m * 60000) / 1000;
displayTheTime = String.valueOf(h) + " hours, "
+ String.valueOf(m) + " minutes, "
+ String.valueOf(s) + " seconds";
// display the times in the Textview
showMyTime.setText(displayTheTime);
}
}
这可以在onCreate
您的活动中的方法中完成:
showMyTime = (TextView) findViewById(R.id.printsavedTime);
推荐阅读
- azure-data-catalog - 如何通过 REST API 为 Azure 数据目录资产设置友好名称?
- regex - Apache 重写,包括查询字符串操作
- amazon-web-services - 我们可以在无服务器架构上部署 QlikSense 吗?
- asp.net - 如何解决 ASP.NET MVC 和 sql server 2019 中系统找不到文件指定错误
- java - 从 Java Spring Boot 中的 Principal 中提取数据
- lua - Lua 表被覆盖
- java - 使用真实设备在颤振中调试第一个应用程序时出错
- c++ - TBB 并行管道:过滤器时序不一致
- python - 通过 XML 文件和 netsh wlan(或 Python)更改 wifi 配置文件的密码
- python - 平台问题中无法加载级别列表