java Android天文钟:时间格式问题
为什么我的计时表在我告诉它后不停
我发现它似乎与我测试过的平板电脑(7英寸)隔离。我不知道为什么它能在我的手机上工作,但在平板电脑上却不能工作。两种布局中的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
安卓:id="@+id/calling_crono"
安卓:layout_height="wrap_content"
安卓:layout_width="wrap_content"
安卓:textColor="#000099"
安卓:textStyle="bold"
安卓:textSize="20sp"/>
在大屏幕上:
<Chronometer
安卓:id="@+id/calling_crono"
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:textSize="50sp"
安卓:textColor="#000099"
安卓:textStyle="bold" />
基本问题是,在手机上,它正常工作,即20秒后继续工作,但在平板电脑上,它不会停止并继续工作。这在我的手机(Xperia
)上有效,但在平板电脑上无效,有什么原因吗。我唯一能想到的是,它们使用不同的xml
布局文件
# 1 楼答案
我相信您所经历的与“不同布局的xml文件”无关。这似乎是一个安卓错误,可能是这个:Chronometer in Android 4.2
检查我是否在普通屏幕大小的手机(
Android 4.2.2
)和三星Galaxy Tab 7(Android 4.0.3
)上做了几项测试(只有一种布局)。我得到返回值chrono.getText().toString()
的以下字符串格式Android 4.0.3:
"mm:ss"
Android 4.2.2:
"m:ss"
对应于报告的错误
假设你的星系标签7有
Android 4.2
解释了为什么计时器没有停止并继续前进:条件currentTime.equals("00:20")
是false
,因为你比较了两个不同格式的字符串,"m:ss"
和"mm:ss"
如果我的假设是错误的,它不考虑
Android
版本,但有一个解决方案来处理它解决方案:我建议以某种方式格式化
currentTime
,例如"mm:ss"
,然后将格式化时间与"00:20"
进行比较。以下代码段使用SimpleDateFormat:现在使用
newTime
进行比较: