Заполнение блесны в другой теме - PullRequest
2 голосов
/ 04 января 2012

Я пытаюсь заполнить счетчик в моей заявке в другой теме. Может ли кто-нибудь сказать мне, почему следующий код не работает?

Следующий код находится в методе 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();

Ответы [ 3 ]

2 голосов
/ 04 января 2012

Я думаю, вам следует использовать метод runOnUiThread (Runnable r) из Activity.

Возможно, сделать что-то подобное

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

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

     );
}

Надеюсь, это поможет ..

1 голос
/ 04 января 2012

Я почти уверен, что ваша ошибка в том, что вы не можете обновить пользовательский интерфейс через другой поток, который не является пользовательским.

Чтобы выполнить то, что вы хотите, вы должны использовать AsyncTask (http://developer.android.com/resources/articles/painless-threading.html), выполнить свою работу в методе doInBackground() и, наконец, обновить свой интерфейс в методе onPostExecute().

1 голос
/ 04 января 2012

Вы, должно быть, столкнулись с видом из неправильной цепочки исключений.
Если вы хотите выполнить любую операцию пользовательского интерфейса, отличную от основного потока, вы должны использовать runOnUi (YOUR_RUNNABLE).

...