繁体   English   中英

在不同的线程中填充旋转器

[英]Filling spinner in different thread

我试图在另一个线程中填充应用程序中的微调框。 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();

我认为您应该使用Activity中的方法runOnUiThread(Runnable r)。

也许做这样的事情

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

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

     );
}

希望对您有所帮助。

您必须从错误的线程异常中获取对View的感动。
当您想从主线程之外执行任何UI操作时,应使用runOnUi(YOUR_RUNNABLE)。

我很确定您遇到的错误是因为您无法通过不是UI线程的其他线程来更新UI。

为了完成你想要什么,你应该使用的AsyncTask( http://developer.android.com/resources/articles/painless-threading.html ),做你的工作,在doInBackground()方法,并终于在方法更新界面onPostExecute()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM