2011-07-06 3 views
0

처음에는 내 응용 프로그램에 5 개의 관련 레이아웃이 표시됩니다. 상대 레이아웃을 클릭하면 선형 레이아웃이로드됩니다. 이 시점에서 진행률 표시 줄을 표시하려고합니다. 진행률 막대 문제

나는 진행률 막대의 다음 코드를 사용하지만

나는이 문제를 어떻게 처리 할 수 ​​ >android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views. 를 제외하고는 무엇입니까?

코드

private OnClickListener exit1Listener = new OnClickListener() 
{ 
    public void onClick(View v) 
    { 
    if(!exit1status) 
     { 
      System.out.println("exit1 visible"); 
     // Exit1 Restaurants 
     if(RB_Constant.upcomingexits_obj.response.size() > 0) 
     {                                                    i    if(RB_Constant.upcomingexits_obj.response.get(0).listRestaurants.size() > 0) 
      { 
       //YRS: listview1.setAdapter(new UpcomingResultsListViewAdapter1(this)); 
       // Create the views on the fly instead of using the ListView 
       rbupcadapter1 = new UpcomingResultsListViewAdapter1(RB_UpcomingExits.this);  


       if(RB_Constant.upcomingexits_obj.response.get(0).listRestaurants.size() > 0) 
       { 
      numItems1 = RB_Constant.upcomingexits_obj.response.get(0).listRestaurants.size(); 
     } 

    Exitexpand_pd = ProgressDialog.show(RB_UpcomingExits.this, "", "Please wait...", true); 
     Thread t = new Thread() 
    { 
     public void run() 
     { 
     try 
     { 
      for(position=0; position < numItems1; position++) 
      { 
      View convertview = null; 
       convertview = rbupcadapter1.getView(position, convertview, null);                          listLayout1.addView(convertview); 
      } 
      } 
     catch(Exception e) 
     {          System.out.println("Exit1Listener error ->"+e.toString()); 
     }        rb_Exitexpand_Handler.post(null); 
    Exitexpand_pd.dismiss(); 
    }            
}; 
t.start(); 


        //listview1.setMinimumHeight(2000); 
       } 
      } 
      else{ 
       //toastMsg("No results!"); 
      } 

      listLayout1.setVisibility(View.VISIBLE); 
      exit1status = true; 
      if(exit2status || exit3status || exit4status || exit5status) 
      { 
       //System.out.println("exit2 GONE"); 
       listLayout2.setVisibility(View.GONE); 
       listLayout3.setVisibility(View.GONE); 
       listLayout4.setVisibility(View.GONE); 
       listLayout5.setVisibility(View.GONE); 
      } 
     } 
     else 
     { 
      System.out.println("exit1 GONE"); 
      listLayout1.setVisibility(View.GONE); 
      exit1status = false; 
     } 

    } 
}; 

답변

0

당신이 UI (뷰)를 업데이트 UI 스레드를 제외한 다른 스레드에서 개체를 할 수없는, 핸들러 객체를 사용하려고합니다.

+0

여기 코드에서이 핸들러를 사용하고 있습니다. rb_Exitexpand_Handler.post (null); – naresh

+0

여기서 다른 뷰를 호출하고 스레드 내의 선형 레이아웃을 추가한다는 것을 의미합니다. 나는 이것이 문제라고 말한 것 같아. – naresh

+0

핸들러 객체를 구현하는 방법은 무엇입니까? – naresh