2012-01-04 4 views
2

내 응용 프로그램에서 회 전자를 다른 스레드로 채우려 고합니다. somoene이 다음 코드가 작동하지 않는 이유를 말해 줄 수 있습니까?다른 스레드에서 회 전자 채우기

다음 코드는 한 OnCreate() 메소드

Thread asyn = new Thread(){ 
     public void run(){ 
      try{ 
       int klok = 0; 
       while(klok < 5000){ 
        sleep(100); 
        klok = klok + 100; 
       } 

       try{ 



        String[] items = new String[] {"One", "Two", "Three"}; 
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(Materiaal.this, android.R.layout.simple_spinner_item, items); 
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
        spinner1.setAdapter(adapter); 



        }catch(Exception ex){ 
         ex.printStackTrace(); 
        }finally{ 
         //adapter.notifyDataSetChanged(); 

        } 

      }catch(InterruptedException ex){ 
       ex.printStackTrace(); 
      } 

     } 
    }; 

    asyn.start(); 
+0

무엇이 문제입니까? 어떤 오류가 있습니까? – kosa

답변

2

Activity에서 runOnUiThread (Runnable r) 메소드를 사용해야한다고 생각합니다.

아마

1

당신은보기 잘못된 스레드 예외에서 감동을 받고해야입니다.
주 스레드가 아닌 다른 사용자가 UI 작업을 수행하려면 runOnUi (YOUR_RUNNABLE)를 사용해야합니다.

1

난 당신이 다른 스레드를 통해 UI를 업데이트 할 수 없습니다 때문에 발생하는 오류입니다 확신 해요 .. 나는 그것이 도움이되기를 바랍니다이

void run() 
{ 
    // do stuff 
    . 
    . 
    . 
    activity.runOnUiThread(new Runnable() 

     void run() 
     { 
      spinner1.setAdapter(adapter); 
     } 

    ); 
} 

그런 짓을하는 UI 스레드가 아닙니다.

당신은 방법 onPostExecute()에 인터페이스를 업데이트 마지막으로 doInBackground() 방법으로 작업을 수행 AsyncTask를 ( http://developer.android.com/resources/articles/painless-threading.html)을 사용한다, 당신이 원하는 것을 달성하기 위해.