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

Закрыто
laandrew
Сообщения: 53
Зарегистрирован: 02 апр 2012, 09:40

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

Сообщение laandrew » 12 май 2012, 18:46

Здравствуйте!

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

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

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));
он работает как надо.

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

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

Сообщение damager82 » 14 май 2012, 11:15

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));
	}
});
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

laandrew
Сообщения: 53
Зарегистрирован: 02 апр 2012, 09:40

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

Сообщение laandrew » 14 май 2012, 21:28

Спасибо!

Закрыто