首页 > 解决方案 > 使用 Chronometer - 在 setText 之后,Textview 只显示文本一秒钟

问题描述

我正在创建一个时间跟踪应用程序,并希望有一个可以启动/暂停/重置的秒表。当我按下“结束一天并保存”按钮时,我希望应用程序在下面的 TevtView 中显示经过的小时/分钟/秒。它确实如此,但只有一秒钟,然后它就消失了。我哪里错了?

我尝试创建一个仅用于更新 TextView 的新方法,但它根本不显示。如果有帮助,我必须用于该项目的最低 SDK 版本是 23。

public void stopAndSaveChronometer(View v) {
    if (running) {
        chronometer.stop();
        running = false;
        time = SystemClock.elapsedRealtime() - chronometer.getBase();
        h = (int) (time / 3600000);
        m = (int) (time - h * 3600000) / 60000;
        s = (int) (time - h * 3600000 - m * 60000) / 1000;

        Intent secondsIntent = new Intent(this,
                trackTodayActivity.class).putExtra("saved seconds", s);

        startActivity(secondsIntent);

        Intent minsIntent = new Intent(this,
                trackTodayActivity.class).putExtra("saved mins", m);

        startActivity(minsIntent);

        Intent hoursIntent = new Intent(this,
                trackTodayActivity.class).putExtra("saved hours", h);

        startActivity(hoursIntent);

        Bundle extras = getIntent().getExtras();

       if (extras != null) {
            seconds = extras.getInt("saved seconds", s);
            minutes = extras.getInt("saved minutes", m);
            hours = extras.getInt("saved hours", h);

        }

        // set up Strings to hold the times (already initialised as global variables)

        printseconds = Integer.toString(s);
        printminutes = Integer.toString(m);
        printhours = Integer.toString(h);

        // set up String to display in TextView (already initialised as global variable)

        displayTheTime = (printhours + " hours, ")
                + (printminutes + " minutes, ")
                + (printseconds + " seconds");

        // display the times in the Textview

        showMyTime = (TextView) findViewById(R.id.printsavedTime);
        showMyTime.setText(displayTheTime);

    }

}

}

标签: javaandroid

解决方案


为什么要发射 3 次trackTodayActivity?这个活动有用吗?

为了显示结果,这应该足够了:

public void stopAndSaveChronometer(View v) {
  if (running) {
    chronometer.stop();
    running = false;
    time = SystemClock.elapsedRealtime() - chronometer.getBase();
    h = (int) (time / 3600000);
    m = (int) (time - h * 3600000) / 60000;
    s = (int) (time - h * 3600000 - m * 60000) / 1000;

    displayTheTime = String.valueOf(h) + " hours, "
            + String.valueOf(m) + " minutes, "
            + String.valueOf(s) + " seconds";

    // display the times in the Textview
    showMyTime.setText(displayTheTime);

  }
}

这可以在onCreate您的活动中的方法中完成:

showMyTime = (TextView) findViewById(R.id.printsavedTime);

推荐阅读