Страница 1 из 1

Требуется помощь.

Добавлено: 12 май 2012, 18:46
laandrew
Здравствуйте!

Есть следующий код:

Код: Выделить всё

progressDialog = ProgressDialog.show(this,"Пожалуйста, подождите...","Идет синхронизация БД",true);
	    	   new Thread(){
	       	        public void run() {
	       	            try{
	       	            		final String[] ghh = { "catalog", "podcatalog1", "podcatalog2", "podcatalog3", "podcatalog4", "tovar" };
	       	            		for(int k=0;k<ghh.length;k++)
	       	            		{
	       	            			ImageManager syncdb = new ImageManager();
	       	            			syncdb.SyncDB(AdminActivity.this,ghh[k],1,2);
	       	            		}
	       	            		ImageManager syncdb9 = new ImageManager();
	       	            		textView2.setText(syncdb9.ViewUpDB(AdminActivity.this));
	       	            } catch (Exception e) { }
   	            			progressDialog.dismiss();
	       	        }
	       		 }.start();
Появляется ProgressDialog и сразу закрывается, а код, который в try{ } не выполняется.
Прошу помочь исправить код, чтобы код заработал.

Я пробовал код использовать в чистом виде:

Код: Выделить всё

final String[] ghh = { "catalog", "podcatalog1", "podcatalog2", "podcatalog3", "podcatalog4", "tovar" };
	       	            		for(int k=0;k<ghh.length;k++)
	       	            		{
	       	            			ImageManager syncdb = new ImageManager();
	       	            			syncdb.SyncDB(AdminActivity.this,ghh[k],1,2);
	       	            		}
	       	            		ImageManager syncdb9 = new ImageManager();
	       	            		textView2.setText(syncdb9.ViewUpDB(AdminActivity.this));
он работает как надо.

Re: Требуется помощь.

Добавлено: 14 май 2012, 11:15
damager82
laandrew писал(а): Появляется ProgressDialog и сразу закрывается, а код, который в try{ } не выполняется.
Прошу помочь исправить код, чтобы код заработал.
textView2.setText не будет работать в новом потоке. Т.к. только основной поток имеет доступ к экранным элементам. Об этом уже через неделю начну рассказывать в уроках.

Попробуйте textView2.setText вынести в отдельный Runnable и запустить его в методе runOnUiThread. Т.е. замените:

Код: Выделить всё

textView2.setText(syncdb9.ViewUpDB(AdminActivity.this));
на

Код: Выделить всё

runOnUiThread(new Runnable() {
	public void run() {
		textView2.setText(syncdb9.ViewUpDB(AdminActivity.this));
	}
});

Re: Требуется помощь.

Добавлено: 14 май 2012, 21:28
laandrew
Спасибо!