Невозможно добавить один пользовательский интерфейс field
или manager
в два manager
s или screen
s .. каждый пользовательский интерфейс field
или manager
должен иметь не более одного родителя (screen
или manager
).
Так что, если вам нужен LabelField
, который будет удерживать и показывать время на разных screen
с, то вам нужно только реализовать какой-то тип слушателя, который будет прослушивать изменения времени ... и для каждого изменения, которое вам нужно обновите screen
и LabelField
с новым значением. Вы уже внедрили TimerTask
, который предоставит вам обновленные данные.
[Отредактировано - добавлено позже]
вы можете проверить следующие коды, не проверенные, но что-то вроде этого решит вашу проблему ...
class MyTimerUtil {
TimerListener listener = null;
public MyTimerUtil() {
}
public void setTimerListener(TimerListener listener) {
this.listener = listener;
}
public void startTimer() {
final int interval = 1000;
Timer timer = new Timer();
TimerTask task = new TimerTask() {
public void run() {
// add your codes..
// notify others
if (listener != null) {
listener.timeChanged();
}
}
};
timer.schedule(task, 0, interval);
}
}
interface TimerListener {
public void timeChanged();
}
class ScreeA extends MainScreen implements TimerListener {
public void timeChanged() {
// add Codes here on time changed event
}
}
В приведенном выше фрагменте вы можете реализовать интерфейс TimerListener
в любом экземпляре экрана и получать обновления при каждом изменении события классом MyTimerUtil
. Для этого вам нужно установить экземпляр ScreeA
(который реализует TimerListener
) через setTimerListener()
класса MyTimerUtil
.
Также необходимо запустить таймер, вызвав метод startTimer()
.