Isso ocorre porque não é permitido mudar os componentes visuais por outra thread, isso deve ser efetuado na UI Thread.
Para isso você pode usar um objeto handle ou o método runOnUIThread para colocar uma tarefa para ser executada na UI Thread.
O comando que você deve colocar para executar na tarefa é o:
anderson.bonavides
[quote=A H Gusukuma]Olá
Isso ocorre porque não é permitido mudar os componentes visuais por outra thread, isso deve ser efetuado na UI Thread.
Para isso você pode usar um objeto handle ou o método runOnUIThread para colocar uma tarefa para ser executada na UI Thread.
O comando que você deve colocar para executar na tarefa é o:
Não ficou claro a sua resposta, você pode esclarecer mais por favor?
L
lucas93lange
Por segurança o Android não permite que sejam feitas alterações de elementos e ou componentes visuais em Threads secundarias.
newThread(newRunnable(){@Overridepublicvoidrun(){try{DocumentBuilderFactorydbf=DocumentBuilderFactory.newInstance();DocumentBuilderdb=dbf.newDocumentBuilder();Documentdoc=db.parse(autoEsporteTO.getFeedNoticias());NodeListlistItem=doc.getElementsByTagName("item");String[]arrayTitles=newString[listItem.getLength()];for(intx=0;x<listItem.getLength();x++){Stringtitle=listItem.item(x).getChildNodes().item(0).getChildNodes().item(0).getNodeValue();Stringlink=listItem.item(x).getChildNodes().item(1).getChildNodes().item(0).getNodeValue();ItemTOitem=newItemTO();item.setTitle(title);item.setUrl(link);arrayTitles[x]=item.getTitle();itemList.add(item);}/*listView.setAdapter(new ArrayAdapter<String> (getBaseContext(), android.R.layout.simple_list_item_1, arrayTitles));*///Percebeu a diferença sem erro agora - Mudanças visuais implementadas aquirunOnUiThread(newRunnable(){publicvoidrun(){listView.setAdapter(newArrayAdapter<String>(getBaseContext(),android.R.layout.simple_list_item_1,arrayTitles));}});}catch(Exceptione){trace(e.toString());}}}).start();
Declare suas variaveis no inicio da Thread para que elas tenham escopo dentro do metodo que altera o componente visual
anderson.bonavides
lucas93lange:
Por segurança o Android não permite que sejam feitas alterações de elementos e ou componentes visuais em Threads secundarias.
newThread(newRunnable(){@Overridepublicvoidrun(){try{DocumentBuilderFactorydbf=DocumentBuilderFactory.newInstance();DocumentBuilderdb=dbf.newDocumentBuilder();Documentdoc=db.parse(autoEsporteTO.getFeedNoticias());NodeListlistItem=doc.getElementsByTagName("item");String[]arrayTitles=newString[listItem.getLength()];for(intx=0;x<listItem.getLength();x++){Stringtitle=listItem.item(x).getChildNodes().item(0).getChildNodes().item(0).getNodeValue();Stringlink=listItem.item(x).getChildNodes().item(1).getChildNodes().item(0).getNodeValue();ItemTOitem=newItemTO();item.setTitle(title);item.setUrl(link);arrayTitles[x]=item.getTitle();itemList.add(item);}/*listView.setAdapter(new ArrayAdapter<String> (getBaseContext(), android.R.layout.simple_list_item_1, arrayTitles));*///Percebeu a diferença sem erro agora - Mudanças visuais implementadas aquirunOnUiThread(newRunnable(){publicvoidrun(){listView.setAdapter(newArrayAdapter<String>(getBaseContext(),android.R.layout.simple_list_item_1,arrayTitles));}});}catch(Exceptione){trace(e.toString());}}}).start();
Declare suas variaveis no inicio da Thread para que elas tenham escopo dentro do metodo que altera o componente visual
Cara muito obrigado, eu já fucei a internet procurando uma solução mas nunca dava certo. Então eu já havia até desistido, nem a minha pouca experiência com Threads e o estudo da certificação me fez enxergar o problema.