안녕하세요.
TextView에 숫자를 1초 마다 증가되는 화면을 만들고 싶은데요...
증가되는 화면은 안보이고 최종결과값인 99만 출력됩니다.
고수님들의 따끔한 지적 부탁드립니다.
몇일에 삽질중이네요 ㅠㅠ
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class Counter extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView counter = (TextView)findViewById(R.id.count);
for(int idx=0; idx < 100; idx++){
counter.setText(String.valueOf(idx));
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
break;
}
}
}
}
main.xml 입니다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/lay2"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView android:id="@+id/count"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
답변들 감사합니다 ^^
진정이님과 회색님이 말씀하신거처럼 해봤는데 안되네요 ㅠㅠ
Log를 보면 1초마다 제대로 값이 출력이 됩니다.
그러나 EditText에는 값이 출력이 안되네요 ㅠㅠ
import java.util.Calendar;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.EditText;
public class TimeTest extends Activity {
EditText et = null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
et = (EditText)findViewById(R.id.count);
Timer time = new Timer();
time.scheduleAtFixedRate(tt, 0, 1000) ;
}
TimerTask tt = new TimerTask(){
public void run(){
final Calendar c = Calendar.getInstance();
int mHour = c.get(Calendar.HOUR_OF_DAY);
int mMinute = c.get(Calendar.MINUTE);
int mSecond =c.get(Calendar.SECOND);
Log.w("NOW ===>", String.valueOf(mHour)+":"+String.valueOf(mMinute)+":"+String.valueOf(mSecond));
et.setText(String.valueOf(mHour)+":"+String.valueOf(mMinute)+":"+String.valueOf(mSecond));
}
};
}
TimerTask tt = new TimerTask(){
public void run(){
Handler handler = new Handler();
handler.post(new Runnable() {
public void run() {
// TODO Auto-generated method stub
final Calendar c = Calendar.getInstance();
int mHour = c.get(Calendar.HOUR_OF_DAY);
int mMinute = c.get(Calendar.MINUTE);
int mSecond =c.get(Calendar.SECOND);
Log.w("NOW ===>", String.valueOf(mHour)+":"+String.valueOf(mMinute)+":"+String.valueOf(mSecond));
et.setText(String.valueOf(mHour)+":"+String.valueOf(mMinute)+":"+String.valueOf(mSecond));
}
});
}
};
간단히 말씀을 드리면
저는 타이머를 이용했는데요~~
헌데 타이머 를 쓰면서 run 을 돌리니 화면이 갱신이 되지 않더라구요
결국 run() 안에 핸들러 를 사용하니 되더군요~ 그러나 이유는 모르는 ㅠㅠ
new Timer time = new Timer();
tim.schedulAtFixedRate(timego,0,1000);
->여기는 크리에이트 안
->여기서 부터는 클래스 안
TimeTask timego = new TimerTesk(){
public void run(){
hander.post(상요할 메서드명()); //핸들러 선어해주시고나서
}
}
사용할 메서드(){}//정의 하세요~