0

我很难让一个简单的 Android 应用程序正常工作。我来自 C 语言,在 Java 方面的经验很少,我试图从一个简单的时钟应用程序开始,它会每秒更新一次显示。这是我的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();
}

我正在使用 Google 提供的 ADT 包在 Debian Linux 中运行它,并遵循 Eclipse 为解决这些问题提供的所有建议,但无济于事。该程序编译得很好,并且完全按照我的预期显示,只是它根本没有更新。我尽我所能搜索了谷歌,并遵循了许多不同的方法,但我没有成功。

我希望这个程序做的是,在创建时,将“currentdatetime”设置为当前日期和时间,将其粘贴在 TextView 中,然后将 TextView 更改为主视图。我希望它handler.postDelayed每隔一千毫秒就会再次命中并再次执行此操作。显然,这不是正在发生的事情。

恐怕我完全迷失了。谁能指出我正确的方向?

4

1 回答 1

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);
}

因此,感谢任何准备回答的人。

于 2013-05-01T02:18:18.057 回答