我一直在尝试从这里发布的答案解决方案,但一切都不起作用,到目前为止,我已尝试使用以下
但是我的TextView没有更新,这是我的代码
在我的onCreate上(假设这是B类,A类扩展活动,B类扩展A)
{
\\some code
mHandler = new Handler();
currentDate.setText(" " + day + " | " + month + " " + monthDay + ", " + year);
showTime();
}
并在同一个班级
private void showTime(){
try{
mHandler.post(new Runnable(){
@Override
public void run() {
timeUpdater();
mHandler.postDelayed(this, 500);
}
});
}catch(Exception e){
e.printStackTrace();
}
}
private void timeUpdater(){
dClock.setText(new SimpleDateFormat("hh:mm:ss a").format(calendar.getTime()) + " ");
}
我想将此问题发布在与此相关的其他问题上,但我认为这违反了规则,所以我决定自己发布一个问题,任何解决方案都将受到高度赞赏!
答案 0 :(得分:0)
能够通过这样做解决我的问题
protected void onCreate()
{
//some code
calendar = Calendar.getInstance();
mHandler.post(myRun);
}
private Runnable myRun = new Runnable(){
public void run(){
dClock.setText(formattedTime());
mHandler.postDelayed(this, 1000);
}
};
这种获取时间的方法有些错误(我认为它只是从Calendar实例初始化时获取日历实例的值),反过来,即使Runnable工作正常,textview似乎也没有更新,因为值是相同的,永远不会更改
public String formattedTime(){
return (new SimpleDateFormat("hh:mm:ss a").format(calendar.getTime()) + " ").toString();
}
虽然这个,但是使用postDelayed函数更新(每次都获取新的日历实例)
public String formattedTime(){
return (new SimpleDateFormat("hh:mm:ss a").format(Calendar.getInstance().getTime()) + " ").toString();
}
我知道有一个数字时钟小部件可以添加到视图中,但我想要一些我可以随意操作的内容(无需添加额外的类),谢谢你的回答!