Opa,
estou com um problema e não encontrei muita referencia no Google…
Preciso criar um relatório com os dados de um cursor, como esse processo pode demorar alguns segundos, quero exibir um ProgressDialog.
private void btnCriaRelatorioClick(){
final ProgressDialog dialog = new ProgressDialog(this);
dialog.setIndeterminate(true);
dialog.setMessage("Aguarde . . . ");
dialog.show();
Runnable runnable = new Runnable() {
@Override
public void run() {
criaRelatorio();
handler.sendEmptyMessage(0);
}
};
handler = new Handler(){
@Override
public void handleMessage(Message msg) {
dialog.dismiss();
}};
runOnUiThread(runnable);
Thread thread = new Thread(runnable);
thread.start();
}
O problema é que o metódo criaRelatorio() acessa TextViews da Tela, alterando seus textos ou visibildade.
private criaRelatorio(){
...
if(codicao){
//erro
meuTextView.setVisibility(View.GONE);
}
}
Queria saber o motivo do erro?? Porque somente a thread principal pode acessas objetos de UI?
E qual a melhor forma de implementar??
Valeuu