Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/26: Рейтинг темы: голосов - 26, средняя оценка - 4.96
 Аватар для Noit
26 / 26 / 10
Регистрация: 11.04.2012
Сообщений: 870

ProgressBar, крутящийся, пока выполняется post-запрос

24.07.2012, 11:54. Показов 5047. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
обычный прогрессбар делать легко, но как сделать так чтобы прогрессбар крутился именно пока выполняется мой пост запрос, а при завершении пост запроса убирался ,а на экран выводилась инфа полученная пост запросом .
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.07.2012, 11:54
Ответы с готовыми решениями:

Как запустить progressBar так, чтобы он двигался пока выполняется процесс или метод?
Как запустить progressBar так чтобы он двигался пока выполняется процесс или метод?

Отображение картинки пока выполняется sql запрос
Доброе время суток. Подскажите пожалуйста, как сделать так, что бы пока выполнялся запрос, была видна картинка (типа gif) а когда он...

Как сделать анимацию пока запрос выполняется
У меня такая проблема Запрос обрабатывается И чтобы форма просто на месте не стояла Я вставил анимацию Но теперь запрос не...

15
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
24.07.2012, 12:36
Java
1
dialog.dismiss();
0
 Аватар для Noit
26 / 26 / 10
Регистрация: 11.04.2012
Сообщений: 870
24.07.2012, 14:09  [ТС]
вот мой экран, куда здесь вставить пргоресс бар ??
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     android:orientation="vertical" 
     android:layout_gravity="right">
     
    <ScrollView 
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/scroll">
 
         <LinearLayout
             android:id="@+id/info"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:orientation="vertical">
     
         </LinearLayout>
    </ScrollView>
 
</LinearLayout>
а вот код явы, здесь где указывать, ато у меня посоянно ошибки вылезают
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class KinoteatrActivity extends Activity {
    
    private String[] TeatresIndex=new String[]{"1","190","6397","21141","32904",
            "23528","23287","22847","51598","51760","51764","51765","65487","65486","63470"};
        
    @Override
    public void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.kinoteatr); 
     
            int index=0;            
            int countTeatres=TeatresIndex.length;
            
            while (index!=countTeatres-1)
            {   
            index++;     
            String html ="<img src='http://topdekor.vot.by/"+PicturePath(index)+".jpg'/>";
            Spanned s = Html.fromHtml(html,getImageHTML(),null);
            Spanned stroka = Html.fromHtml(postData(index));            
            addToTextView(teatrName,stroka,s,count,index);       
            }
Добавлено через 1 минуту
в while выполняется пост запрос
0
 Аватар для flashok
97 / 96 / 4
Регистрация: 14.02.2009
Сообщений: 311
24.07.2012, 14:14
http://developer.android.com/g... alogs.html
0
 Аватар для Noit
26 / 26 / 10
Регистрация: 11.04.2012
Сообщений: 870
24.07.2012, 14:36  [ТС]
Цитата Сообщение от Noit Посмотреть сообщение
вот мой экран, куда здесь вставить пргоресс бар ??
после второго лэйаута програмно создаются большое количество тексвиев с помощью процедур которые в while, поэтому не знаю куда вставить прогресс бар
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
24.07.2012, 14:58
не внимательно прочитал Ваш пост.
прогрес бар убирать так: bar.setVisibility(View.GONE);
вставляйте где хотите.
а лучше используйте прогрес диалог, линк выше.
как диалог убрать, тоже выше написано.
0
 Аватар для Noit
26 / 26 / 10
Регистрация: 11.04.2012
Сообщений: 870
24.07.2012, 15:59  [ТС]
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class KinoteatrActivity extends Activity {
    
    private String[] TeatresIndex=new String[]{"1","190","6397","21141","32904",
            "23528","23287","22847","51598","51760","51764","51765","65487","65486","63470"};
    private ProgressBar progressBar;
    
    @Override
    public void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.kinoteatr); 
      
            int index=0;            
            int countTeatres=TeatresIndex.length;
            progressBar = (ProgressBar)findViewById(R.id.loading);
                
            while (index!=countTeatres-1)
            {   
            index++;     
            String html ="<img src='http://topdekor.vot.by/"+PicturePath(index)+".jpg'/>";
            Spanned s = Html.fromHtml(html,getImageHTML(),null);
            Spanned stroka = Html.fromHtml(postData(index));
            if (index==countTeatres-2)
            {
                progressBar.setVisibility(View.GONE);
            }
            addToTextView(teatrName,stroka,s,count,index);       
            }
Вот добавил,
но при нажатии кнопки начинает выполнятся пост запрос, и черный экран запрос выполнился и пояявились данные, а самого прогресс бара и в помине нет
0
16 / 16 / 2
Регистрация: 19.10.2009
Сообщений: 91
25.07.2012, 00:29
Он должен крутиться в отдельном потоке. Вообще это не совсем тривиальный компонент, с которым много трудностей возникает. К примеру если перевернуть экран при его показе, от всё пропадет.
Вот ответ http://habrahabr.ru/post/107188/
вдогонку http://habrahabr.ru/post/119023/
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
25.07.2012, 00:37
Не, это запрос к серверу делается в другом потоке.

Добавлено через 1 минуту
Именно из-за этого черный экран.

Добавлено через 3 минуты
Noit, у Вас запрос как и прятание прогрес бара выполняется еще до создания активити(точнее в методе создания), соответственно Вы ничего и не увидите.
0
16 / 16 / 2
Регистрация: 19.10.2009
Сообщений: 91
25.07.2012, 01:08
А, ну да, каюсь. Я просто помню что в разных потоках.
Что заметил по коду.
Категорически не рекомендую в основном потоке активности использовать подключение к интернету! Это дело в Android выше >3 версии запретили. Так что просто не будет работать это дело. Вы получите ошибку
Java
1
2
3
4
5
android.os.NetworkOnMainThreadException
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1077)
at java.net.InetAddress.lookupHostByName(InetAddress.java:477)
at java.net.InetAddress.getAllByNameImpl(InetAddress.java:277)
at java.net.InetAddress.getAllByName(InetAddress.java:249)
0
 Аватар для Noit
26 / 26 / 10
Регистрация: 11.04.2012
Сообщений: 870
25.07.2012, 16:48  [ТС]
то в какие потоки, что писать, чтобы сразу после нажатия был прогресс бар??
его в основной сунуть??
а запрос у меня очень объемный как его можно с наименьшими изменениями занести в новый поток??

Добавлено через 3 часа 26 минут
занести в поток post запрос, если он находиться в отдельной процедуре, которая зависит от index который инкрементируется в while ??
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
25.07.2012, 19:02
Цитата Сообщение от @gent Посмотреть сообщение
.....
0
 Аватар для Noit
26 / 26 / 10
Регистрация: 11.04.2012
Сообщений: 870
25.07.2012, 19:08  [ТС]
Цитата Сообщение от Noit Посмотреть сообщение
занести в поток post запрос, если он находиться в отдельной процедуре, которая зависит от index который инкрементируется в while ??
мне нужно в отдельный поток поставить запрос, но поскольку он должен возвращать постоянно строку, в зависимости от индекса, я здесь застрял
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
25.07.2012, 19:27
не понимаю в чем проблема....
0
 Аватар для Noit
26 / 26 / 10
Регистрация: 11.04.2012
Сообщений: 870
25.07.2012, 19:44  [ТС]
вот как сделать так чтобы поток возвращал мне str от данного index'a
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
public String postData(int index) {
        
        String str = null;
        HttpParams params = new BasicHttpParams();
        params.setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
        HttpClient httpclient = new DefaultHttpClient(params);
        HttpPost httppost = new HttpPost("http://topdekor.vot.by/api.php");
        
        try {
            
            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
            nameValuePairs.add(new BasicNameValuePair("u", "android"));
            nameValuePairs.add(new BasicNameValuePair("p", "036"));
            nameValuePairs.add(new BasicNameValuePair("action", "get_object_info_by_id"));
            nameValuePairs.add(new BasicNameValuePair("object_id", TeatresIndex[index]));
            nameValuePairs.add(new BasicNameValuePair("codepage", "utf8"));
            nameValuePairs.add(new BasicNameValuePair("template_id", "51762"));
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            
            HttpResponse response = httpclient.execute(httppost);
            
            str = EntityUtils.toString(response.getEntity());
            response.getEntity().consumeContent();  
            
                str = str.replaceAll("TITLE_REGION_NAME", "Регион: ");
                str = str.replaceAll("TITLE_ADDRESS", "Адрес:");
                str = str.replaceAll("TITLE_TELEPHONE_AUTO", "Автоответчик: ");
                str = str.replaceAll("TITLE_TELEPHONE", "Телефон кассы:");
                str = str.replaceAll("TITLE_BOSS_TELEPHONE", "Телефон директора: ");
                str = str.replaceAll("TITLE_BOSS", "Директор:");               
                str = str.replaceAll("TITLE_TEMPLATE_COUNT", "Количество залов:");
                str = str.replaceAll("TITLE_DATE_OPEN", "Дата открытия:");
                str = str.replaceAll("TITLE_BAR_ASSORTIMENT", "Ассортимет бара:");
                str = str.replaceAll("TITLE_BAR_URL", "Адрес бара в сети Интернет:");
                str = str.replaceAll("TITLE_BAR", "Бар:");
                str = str.replaceAll("TITLE_SERVICES", "Дополнительные услуги:");
                str = str.replaceAll("TEXT_NOT_EXISTS", "Нет информации");
                str = str.replaceAll("TEXT_NO_INFORMATION", "Нет информации");
                str = str.replaceAll("<(.)+?>", "");
                str = str.replaceAll("<(\n)+?>", "");
                str = str.replaceAll("  ", "");
                
        } catch (ClientProtocolException e) {
            
            Log.e("ERROR","MalformedURLException");
            
        } catch (IOException e) {
            
            Log.e("ERROR","IOException");
        }
        return str;     
    }
Добавлено через 2 минуты
Java
1
2
3
4
5
6
7
8
9
10
while (index!=countTeatres-1)
            {   
            index++;     
            String html ="<img src='http://topdekor.vot.by/"+PicturePath(index)+".jpg'/>";
            Spanned s = Html.fromHtml(html,getImageHTML(),null);
           [B] Spanned stroka = Html.fromHtml(postData(index));[/B]
            int count = new StringBuffer(stroka).indexOf ("Регион:");
            String teatrName = stroka.toString().substring(0, count); 
            addToTextView(teatrName,stroka,s,count,index);       
            }
тут прокручиваеться индекс
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
25.07.2012, 20:38
Примерно как-то так должно выглядеть

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
private class MyAsyncTask extends AsyncTask<Void, Spanned , Void> {
     protected void doInBackground() {
         while (index!=countTeatres-1)
            {   
            index++;     
            String html ="<img src='http://topdekor.vot.by/"+PicturePath(index)+".jpg'/>";
            Spanned s = Html.fromHtml(html,getImageHTML(),null);
           [B] Spanned stroka = Html.fromHtml(postData(index));[/B]
            publishProgress(stroka, s);
            }
 
     }
 
     protected void onProgressUpdate(Spanned ... spanned ) {
          int count = new StringBuffer(stroka).indexOf ("Регион:");
          String teatrName = stroka.toString().substring(0, count); 
         addToTextView(teatrName,spanned [0],spanned [1],count,index);  
     }
 
     
 
     public String postData(int index) {
              \\
    }
 }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.07.2012, 20:38
Помогаю со студенческими работами здесь

Почему в Yii может не выполняется post Запрос?
Почему заместо того, чтобы входить в тело post запроса после нажатия на кнопку submit, вылезает такое сообщение с ошибкой 500 на текущий...

Post запрос выполняется только на своей машине, но не c сервера
Подскажите, как сделать чтобы скрипт выполнялся не только на моём компьютере, а и с сервера: #!/usr/bin/perl use LWP; use...

Как узнать какой выполняется POST(GET) запрос в браузере при нажатии кнопки на сайте и как его воспроизвести
Есть реальный пример: на сайте vk в браузере играет музыка, по нажатии на паузу она останавливается. Как мне отправить такой же POST запрос...

Progressbar пока грузится окно
Форумчане не подскажете как реализовать чтобы при открытии формы сначала progressbar ПОКАЗЫВАЛ ЗАГРУЗКУ? заранее благодарен

Label не обновляется, пока ProgressBar не заполнится
Здравствуйте товарищи программисты, у меня возикло несколько проблем с прогой procedure TForm1.Button1Click(Sender: TObject); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru