gpt4 book ai didi

java - Android 计时器 : time format issue

转载 作者:行者123 更新时间:2023-12-01 12:53:08 27 4
gpt4 key购买 nike

为什么我的计时器在我告诉它停止后却不会停止?

我发现它似乎与我测试过的平板电脑(7 英寸 Galaxy Tab)隔离。我不知道为什么它可以在我的手机上运行但不能在平板电脑上运行。 Chronometer 在两种布局中的设置相同(因为我针对不同的屏幕尺寸使用不同的布局)。

以下是类中处理 Chronometer 的方式:

this.chrono = (Chronometer) findViewById(R.id.calling_crono);

chrono.setOnChronometerTickListener(new OnChronometerTickListener() {

public void onChronometerTick(Chronometer chronometer) {
String currentTime= chrono.getText().toString();
if(currentTime.equals("00:20"))
{
chrono.stop();
Intent intent = new Intent(QuizActivity.this, ResultActivity.class);
Bundle b = new Bundle();

int end = -5;
b.putInt("score", score);
b.putInt("end", end);
intent.putExtras(b);
startActivity(intent);
finish();
}
}
});
public void startCrono() {
chrono.setBase(SystemClock.elapsedRealtime());
chrono.start();
}

以下是在正常尺寸屏幕中的设置方式:

<Chronometer
android:id="@+id/calling_crono"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:textColor="#000099"
android:textStyle="bold"
android:textSize="20sp"/>

这是在大尺寸屏幕中:

 <Chronometer
android:id="@+id/calling_crono"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="50sp"
android:textColor="#000099"
android:textStyle="bold" />

基本问题是,在手机上它可以正常工作,即 20 秒后继续前进,但在平板电脑上它不会停止并继续前进。是否有某种原因导致该功能在我的手机(Xperia)上有效,但在平板电脑上无效?我唯一能想到的是他们使用不同的 xml 布局文件。

最佳答案

我相信您遇到的问题与“不同布局 xml 文件”无关。。这似乎是一个 Android bug,可能是这个:Chronometer in Android 4.2 .

检查我是否在正常屏幕尺寸的手机(Android 4.2.2)上完成了多项测试(仅使用一种布局) strong>)和三星 Galaxy Tab 7(Android 4.0.3)。我得到以下 chrono.getText().toString()

返回值的字符串格式
  1. Android 4.0.3: “mm:ss”
  2. Android 4.2.2: “m:ss”

对应于报告的错误

假设您的 Galaxy Tab 7 具有Android 4.2,这解释了为什么天文台计时器不会停止并继续前进:条件 currentTime.equals("00:20")false 因为您比较两个不同格式的字符串 “m:ss”“mm:ss”

如果我的假设是错误的并且它不考虑 Android 版本,那么有一个解决方案可以处理它。

解决方案:我建议以某种方式格式化currentTime,例如“mm:ss”,然后将格式化时间与“00:20”进行比较。以下代码 fragment 使用 SimpleDateFormat :

chrono.setOnChronometerTickListener(new OnChronometerTickListener() {

public void onChronometerTick(Chronometer chronometer) {

String currentTime= chrono.getText().toString();
Date date = null;
try {
date = new SimpleDateFormat("mm:ss").parse(currentTime);
} catch (ParseException e) {
e.printStackTrace();
}
String newTime = new SimpleDateFormat("mm:ss").format(date);
...

现在使用 newTime 进行比较:

if(newTime.equals("00:20")) {
// your code
}

关于java - Android 计时器 : time format issue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24065680/

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