Study/Android

Only the original thread that created a view hierarchy can touch its views

nobang 2011. 11. 20. 14:49
728x90
잘되던 프로그램에서 약간 수정을 했더니
"Only the original thread that created a view hierarchy can touch its views" 에러가 나면서 해당 동작이 수행이 되는건지...

결국 찾은 결론은.
Thread를 발생시켜 로직을 처리하는데
Runnable의 run Method에서 조회해 온 Data를
바로 TextView에 setText()하려다 위와같은 에러가 난 것 같다.

Handler에서 처리해 주니 정상적으로 작동한다.

실제 UI객체에 값을 넣은것은 여태까지 모두 Handler에서였는데....

private Runnable postRun = new Runnable(){
        public void run(){
            try{               
               
                ConnectionUtil cu = new ConnectionUtil();
                postView = cu.getPostView(gHref);
                //title.setText(postView.getTitle()) ---->> 기존에 시도했던 것에서 Exception, handler로 옮김
                Message msg = postHandler.obtainMessage();
                postHandler.sendMessage(msg);
                return;
            }catch(Exception e){
                Log.e("MEMORUN", e.getMessage());
                Message msg = postHandler.obtainMessage();           
                postHandler.sendMessage(msg);
            }       
           
        }
    };
    private Handler postHandler = new Handler(){
        public void handleMessage(Message msg){
                title.setText(postView.getTitle());
          
            loadingDialog.dismiss();
        }
    };
728x90