一段时间后,TextClock自动刷新



我是Android开发的新手,我有这个奇怪的问题。我正在使用Android Studio进行编程。

我有此活动,当用户单击警报时间 textclock时,显示了一个timepickerdialog,当他设置所需时间时,它将显示在同一文本中。问题是在几秒钟后,文本克罗克"忘记"设置了时间并显示当前时间。

n.b。TextClock默认显示当前时间(初始化时)。

XML代码

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.zboot.zalarm.NewAlarmActivity">
    <TextClock
        android:id="@+id/alarmTime"
        android:layout_width="wrap_content"
        android:layout_height="32dp"
        android:layout_marginTop="300dp"
        android:autoText="false"
        android:clickable="true"
        android:focusable="true"
        android:textSize="30sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>

Java代码

import android.app.TimePickerDialog;
import android.os.Bundle;
import android.support.constraint.ConstraintLayout;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.Spinner;
import android.widget.TextClock;
import android.widget.TimePicker;
import java.text.DateFormat;
public class NewAlarmActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_new_alarm);
        this.setTitle("New Alarm");
        final boolean is24HourFormat = android.text.format.DateFormat.is24HourFormat(this);
        final TextClock alarmTime = (TextClock) findViewById(R.id.alarmTime);
        final DateFormat timeFormat = DateFormat.getTimeInstance();
        alarmTime.setText(timeFormat.format(System.currentTimeMillis()));
        final TimePickerDialog timePickerDialog = new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {
            @Override
            public void onTimeSet(TimePicker timePicker, int h, int m) {
                String hour = "" + (is24HourFormat ? h : ((h == 0 || h== 12) ? 12 : h%12));
                String min = m>9 ? "" + m : "0" + m;
                String ap = is24HourFormat ? "" : (h<12 ? "AM" : "PM");
                alarmTime.setText(hour + ":" + min + " " + ap);
            }
        }, 12,0,is24HourFormat);
        alarmTime.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                timePickerDialog.show();
            }
        });
    }
}

我做错了什么吗?请帮助。

textclock对我来说是新的,所以我不确定它的作用。我快速查看了源头,看来TextClock催生了一个线程,该线程将文本不断更新到当前时间。您所能做的就是更改格式,但这确实是,正如它的名称所暗示的那样,时钟。从文档中:

textClock可以显示当前日期和/或时间为格式 字符串。

所以我认为您应该停止使用TextClock,而只是使用TextView。

编辑:如果您喜欢文本链接,则可能只想复制源代码(请参阅上面的链接),制作自己的textClock(AlarmClock?),然后删除可运行的可运行时间来不断更新当前时间。

最新更新