UI 스레드에서 tTxtViews의 텍스트 만 변경할 수 있지만 작업 할 방법이없는 것 같습니다.스레드에서 TextView 텍스트 변경
좀 더 자세히 설명하겠습니다. 시간이 경과 한 TextView를 갖기 위해 노력하고 있지만 스레드 나 계속 호출되는 메서드에서는 수행 할 수 없습니다. 이 작업을 도와 줄 수 있습니까? 왜냐하면 나는 아이디어가 부족하기 때문입니다.
감사합니다.
UI 스레드에서 tTxtViews의 텍스트 만 변경할 수 있지만 작업 할 방법이없는 것 같습니다.스레드에서 TextView 텍스트 변경
좀 더 자세히 설명하겠습니다. 시간이 경과 한 TextView를 갖기 위해 노력하고 있지만 스레드 나 계속 호출되는 메서드에서는 수행 할 수 없습니다. 이 작업을 도와 줄 수 있습니까? 왜냐하면 나는 아이디어가 부족하기 때문입니다.
감사합니다.
public class MainActivity extends Activity {
protected static final long TIMER_DELAY = 100;
private TextView tv;
protected Handler handler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView)findViewById(R.id.helloWorld);
handler = new Handler();
handler.post(timerTask);
}
private Runnable timerTask = new Runnable() {
public void run() {
Calendar now = Calendar.getInstance();
//format date time
tv.setText(String.format("%02d:%02d:%02d", now.get(Calendar.HOUR_OF_DAY), now.get(Calendar.MINUTE), now.get(Calendar.SECOND)));
//run again with delay
handler.postDelayed(timerTask, TIMER_DELAY);
}
};
}
.
@Override
public void onPause() {
if (handler != null)
handler.removeCallbacks(timerTask);
super.onPause();
}
을 그리고 당신은 다시 시작하려는 경우 당신이 그것을 할 수 없습니다 알고, 당신이 뭔가를 시도했습니다해야하는 경우 응용 프로그램은 그럼이
@Override
public void onResume() {
super.onResume();
if (handler != null)
handler.post(timerTask);
}
대단히 감사합니다! amaxing 솔루션! – Yuval3210
사용이
new Thread(new Runnable() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
// Do what you want.
}
});
}
}).start();
또는 사용하십시오 Handler
:
Runnable r = new Runnable() {
@Override
public void run() {
// Do what you want.
}
};
Handler mHandler = new Handler();
mHandler.post(r);
을하려고 이렇게 잊지 마세요? 여기에 시련을 게시하십시오. 아마도 우리는 어디로 잘못되었는지 알아낼 수 있도록 도울 수 있습니다. –
A-C의 설명은 TextView를 어디에서 변경할지에 따라 다릅니다. – Christine