안드로이드 개발 질문/답변
(글 수 45,052)
올려주신 대로 Handler를 이용해 스레드 내부에서 이렇게 구현 하였습니다.
리스트 뷰에서 커스톰 어댑터를 이용하여 텍스트가 보이고 아래에 진행 상황이 나타나도록 하려고 하는데요.
이게 여간 어려운게 아니네요.
mHandler.post(new Runnable() {
@Override
public void run() {
int pPos = (int) ((float) (curPosition * 100) / (float) dur);
pProgress.setProgress(pPos);
}
});
스레드는 implements Runnable로 하였구요 처음에는 extends Thread로 하였다가 이게 아닌거 같아 수정 하였습니다.
mFRT = new FileRecvThread(tp);
Thread t = new Thread(mFRT);
t.run();
프로그레스 바는 아래와 같이 할당을 받는데요 첫줄처럼 했다가 안되서 아랫줄로 바꿨는데 그래도 안되네요.
ProgressBar pb = new ProgressBar(getApplication());
ProgressBar pb = (ProgressBar)findViewById(R.id.bottompb);
스레드는 예제에 나온것과는 다르게 제가 새로 파일을 만들어 (ex. FileRecvThread.java) 그안에 구현을 하였습니다.
꼭 하나의 파일 안에서 돌려야 하는 건지요? 굳이 그러지 않아도 될거 같은데...
정확하게 다시 한번 제 상황을 정리 하자면
Main Activity 는 ListActivity 를 상속받았습니다.
스레드는 다른 파일에 구현 하였고 위 처럼 선언해서 사용하고 있습니다. 잘 돌아갑니다.
스레드의 run() 중간에서 Handler를 이용해 ProgressBar를 셋팅하려고 했습니다. 잘 안됩니다.
프로그레스바 객체에 문제가 있는가 싶어서 위와 같이 두가지 시도로 나눠서 해봤는데 그래도 안됩니다.
무엇이 잘못되었는지 감을 못잡겠네요..
의심나는건 모두 제시해 봤습니다.
도움 부탁드립니다.
1. 스레드에서 엑티비티의 핸들러가 제대로 호출되는가?
2. int pPos의 값이 제대로 출력되는가?
3. 화면갱신이 제대로 되는가?
의심가는건 이정도네요..