Прежде всего, я новый для android. Поэтому я отображал текущее время на TextView в MainActivity.java с помощью обработчика , который работал отлично. Затем я использовал TimePicker (который фактически находится в другом действии TimeActivity.java), чтобы выбрать время, при котором время останавливается.Обработчик не обновляет UI
Например, если время выбрали с помощью TimePicker 8:30, время в TextView перестанут дальше продвинуться дальше 8.30
Также Theres кнопку STOP, с помощью которого вызывает handler.removeMessages (0);, чтобы остановить обработчик и, следовательно, время.
- Проблема заключается в том, когда я вернусь из TimeActivity.java, то TextView пустой, который выглядит как обработчик не работают, но он успешно тосты «Время остановилось», когда хит времени вышло. Что это за аномалия?
- я случайно столкнуться с другой проблемой, тостом, «Время остановилось» в конечного момента() преобладает на экране в течение аномально длительный периода времени, но это нормально с Тост в остановке (View об) даже если Я использовал ту же логику, чтобы остановить обработчик в обоих методах. Что вызывает это?
Вот мой MainActivity.java
import static com.gamecodeschool.broadcast.TimeActivity.minute1;
общественного класса MainActivity расширяет AppCompatActivity {
Button start,stop,set;
TextView textView;
final Handler handler = new Handler();
Runnable r;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Views
textView = (TextView)findViewById(R.id.textView);
start = (Button)findViewById(R.id.button);
stop = (Button)findViewById(R.id.button2);
set = (Button)findViewById(R.id.button3);
set.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
Intent intent = new Intent(getApplicationContext(),TimeActivity.class);
startActivity(intent);
}
});
}
public void stop(View v) {
handler.removeMessages(0);
Toast.makeText(this,"Stopped",Toast.LENGTH_SHORT).show();
}
public void runInBackground(View v) {
handler.post(r);
r = new Runnable() {
@Override
public void run() {
//String time = java.text.DateFormat.getDateTimeInstance().format(new Date());
Calendar calendar = Calendar.getInstance();
int hour = calendar.get(Calendar.HOUR_OF_DAY);
int minute = calendar.get(Calendar.MINUTE);
StringBuilder stringBuilder = new StringBuilder().append(hour).append(":").append(minute);
textView.setText(stringBuilder);
if (minute==minute1){
stopTime();
}
handler.postDelayed(this,100);
}
};
}
private void stopTime() {
handler.removeMessages(0);
Toast.makeText(this,"Time Stopped",Toast.LENGTH_SHORT).show();
} }
И вот мой TimeActivity
public class TimeActivity extends AppCompatActivity {
TimePicker timePicker;
Button button;
TextView textView;
StringBuilder stringBuilder;
static int hour1,minute1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_time);
timePicker = (TimePicker)findViewById(R.id.timePicker);
button = (Button)findViewById(R.id.saveButton);
textView = (TextView)findViewById(R.id.timeView);
Calendar calendar = Calendar.getInstance();
int hour = calendar.get(Calendar.HOUR_OF_DAY);
int minute = calendar.get(Calendar.MINUTE);
showTime(hour,minute);
}
private void showTime(int hour, int minute) {
stringBuilder = new StringBuilder().append(hour).append(":").append(minute);
textView.setText(stringBuilder);
}
public void saveTime(View v){
hour1 = timePicker.getHour();
minute1 = timePicker.getMinute();
showTime(hour1,minute1);
Toast.makeText(TimeActivity.this,hour1+":"+minute1,Toast.LENGTH_SHORT).show();
Intent intent = new Intent(this,MainActivity.class);
startActivity(intent);
} }
Нет, его не работает. Та же проблема сохраняется. Любые другие исправления? Спасибо за помощь. – Vyshak