0
首先,我新來android。因此,我使用Handler在MainActivity.java中的TextView上顯示當前時間,這很好。然後我使用TimePicker(實際上是在另一個活動TimeActivity.java中)選擇時間停止的時間。處理程序不更新UI
例如,如果時間使用TimePicker是8:30拾取,在TextView的時間將不再進一步推進超出8:30
而且那裏有與它調用handler.removeMessages一個STOP按鈕(0);停止處理程序,因此時間。
- 的問題是,當我來自TimeActivity.java回來,TextView的是空白的,看起來像處理未運行,但它成功乾杯「時間停止」到時候的命中。這是什麼異常?
- 我碰巧遇到了另一個問題,麪包,在停止時間()普遍存在的屏幕時異常較長的時間上,但它是正常的與土司停止(視圖V)儘管「時間停止」我用同樣的邏輯在兩種方法中停止處理程序。這是什麼造成的?
這裏是我的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