我正在努力让简单的Android应用程序正常运行。我在Java方面的经验很少,来自C,而我正试图从一个简单的时钟应用程序开始,它将每秒更新一次显示。这是我的Java代码:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String currentdatetime =
DateFormat.getDateTimeInstance().format(new Date());
final TextView textview = new TextView(this);
Handler handler = new Handler();
Runnable runnable = new Runnable() {
@Override
public void run() {
String currentdatetime =
DateFormat.getDateTimeInstance().format(new Date());
textview.setText(currentdatetime);
}
};
textview.setGravity(Gravity.CENTER);
textview.setTextSize(20);
textview.setText(currentdatetime);
setContentView(textview);
handler.postDelayed(runnable, 1000);
runnable.run();
}
我在Debian Linux中使用Google提供的ADT捆绑包运行此功能,并遵循Eclipse为修复这些问题提供的所有建议,但无济于事。该程序编译得很好并且完全按照我的预期显示,除了它根本不更新。我尽我所能地搜索谷歌,并采取了许多不同的方式,但我没有成功。
我希望这个程序要做的是,在创建时,将“currentdatetime”设置为当前日期和时间,将其粘贴到TextView中,然后将TextView更改为主视图。我希望它然后点击handler.postDelayed
并且每千毫秒再次执行此操作。显然,这不是正在发生的事情。
我害怕我完全迷失了。有人能指出我正确的方向吗?
答案 0 :(得分:3)
好吧,看来我在错误的赛道上。我已经让代码现在正常工作,而且更加整洁,具体如下:
protected void onCreate(Bundle savedInstanceState) {
final Handler handler = new Handler();
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TextView textview = new TextView(this);
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
handler.post(new Runnable() {
public void run() {
String currentDateTimeString =
DateFormat.getDateTimeInstance().format(new Date());
textview.setGravity(Gravity.CENTER);
textview.setTextSize(60);
textview.setText(currentDateTimeString);
setContentView(textview);
}
});
}
},1000,1000);
}
感谢任何准备回答的人。