Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.63
Noit
26 / 26 / 3
Регистрация: 11.04.2012
Сообщений: 868
#1

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

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

обычный прогрессбар делать легко, но как сделать так чтобы прогрессбар крутился именно пока выполняется мой пост запрос, а при завершении пост запроса убирался ,а на экран выводилась инфа полученная пост запросом .
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.07.2012, 11:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос ProgressBar, крутящийся, пока выполняется post-запрос (Программирование Android):

Некорректно выполняется запрос к SQLite - Программирование Android
Здравствуйте! Необходимо сделать выборку данных из БД по двум условиям + еще максимум по третьему столбцу: public List<Table.Lesson>...

POST запрос - Программирование Android
Существует активити "Register", содержащий несколько элементов edittext. Пытаюсь передать текст из них в другой класс "RestClient", чтобы...

Post запрос - Программирование Android
Как отправить POST запрос на java?

Post запрос - Программирование Android
Как отправить Post запрос и принять ответ сервера ? Exlipce

post запрос - Программирование Android
public String postData() { String str = null; HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost =...

POST Запрос - Программирование Android
подскажите что здесь не так, ошибка возникает на строке HttpResponse responsePOST = client.execute(post); public...

15
V0v1k
1159 / 983 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
24.07.2012, 12:36 #2
Java
1
dialog.dismiss();
0
Noit
26 / 26 / 3
Регистрация: 11.04.2012
Сообщений: 868
24.07.2012, 14:09  [ТС] #3
вот мой экран, куда здесь вставить пргоресс бар ??
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
87 / 89 / 1
Регистрация: 14.02.2009
Сообщений: 293
24.07.2012, 14:14 #4
http://developer.android.com/guide/topics/ui/dialogs.html
0
Noit
26 / 26 / 3
Регистрация: 11.04.2012
Сообщений: 868
24.07.2012, 14:36  [ТС] #5
Цитата Сообщение от Noit Посмотреть сообщение
вот мой экран, куда здесь вставить пргоресс бар ??
после второго лэйаута програмно создаются большое количество тексвиев с помощью процедур которые в while, поэтому не знаю куда вставить прогресс бар
0
V0v1k
1159 / 983 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
24.07.2012, 14:58 #6
не внимательно прочитал Ваш пост.
прогрес бар убирать так: bar.setVisibility(View.GONE);
вставляйте где хотите.
а лучше используйте прогрес диалог, линк выше.
как диалог убрать, тоже выше написано.
0
Noit
26 / 26 / 3
Регистрация: 11.04.2012
Сообщений: 868
24.07.2012, 15:59  [ТС] #7
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
@gent
16 / 16 / 1
Регистрация: 19.10.2009
Сообщений: 91
25.07.2012, 00:29 #8
Он должен крутиться в отдельном потоке. Вообще это не совсем тривиальный компонент, с которым много трудностей возникает. К примеру если перевернуть экран при его показе, от всё пропадет.
Вот ответ http://habrahabr.ru/post/107188/
вдогонку http://habrahabr.ru/post/119023/
0
V0v1k
1159 / 983 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
25.07.2012, 00:37 #9
Не, это запрос к серверу делается в другом потоке.

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

Добавлено через 3 минуты
Noit, у Вас запрос как и прятание прогрес бара выполняется еще до создания активити(точнее в методе создания), соответственно Вы ничего и не увидите.
0
@gent
16 / 16 / 1
Регистрация: 19.10.2009
Сообщений: 91
25.07.2012, 01:08 #10
А, ну да, каюсь. Я просто помню что в разных потоках.
Что заметил по коду.
Категорически не рекомендую в основном потоке активности использовать подключение к интернету! Это дело в 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 / 3
Регистрация: 11.04.2012
Сообщений: 868
25.07.2012, 16:48  [ТС] #11
то в какие потоки, что писать, чтобы сразу после нажатия был прогресс бар??
его в основной сунуть??
а запрос у меня очень объемный как его можно с наименьшими изменениями занести в новый поток??

Добавлено через 3 часа 26 минут
занести в поток post запрос, если он находиться в отдельной процедуре, которая зависит от index который инкрементируется в while ??
0
V0v1k
1159 / 983 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
25.07.2012, 19:02 #12
Цитата Сообщение от @gent Посмотреть сообщение
.....
0
Noit
26 / 26 / 3
Регистрация: 11.04.2012
Сообщений: 868
25.07.2012, 19:08  [ТС] #13
Цитата Сообщение от Noit Посмотреть сообщение
занести в поток post запрос, если он находиться в отдельной процедуре, которая зависит от index который инкрементируется в while ??
мне нужно в отдельный поток поставить запрос, но поскольку он должен возвращать постоянно строку, в зависимости от индекса, я здесь застрял
0
V0v1k
1159 / 983 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
25.07.2012, 19:27 #14
не понимаю в чем проблема....
0
Noit
26 / 26 / 3
Регистрация: 11.04.2012
Сообщений: 868
25.07.2012, 19:44  [ТС] #15
вот как сделать так чтобы поток возвращал мне 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
25.07.2012, 19:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.07.2012, 19:44
Привет! Вот еще темы с ответами:

Post запрос XML - Программирование Android
Добрый день, подскажите, как сделать post запрос, отправляться должна xml вида: &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&gt; &lt;data&gt; ...

Retrofit2, POST запрос - Программирование Android
Пытаюсь передать данные на веб сервер. читал туториалы но не могу понять до конца как это реализовать. Создал интерфейс, подключил все...

ANDROID и POST запрос - Программирование Android
Если честно я не знал в какой раздел лучше написать так как моя задача затрагивает несколько областей программирования. Если что извините...

POST - запрос на сервер - Программирование Android
Суть задачи: при нажатии на кнопку пост-запросом отправляется переменная со значением. Проблема: при нажатии на кнопку приложение...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru