Форум программистов, компьютерный форум CyberForum.ru

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

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

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

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

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

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

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

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

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

Android POST Запрос
Android Post запрос
Android Некорректно выполняется запрос к SQLite
POST запрос Android
Android Не передается POST запрос

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

Или воспользуйтесь поиском по форуму:
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
25.07.2012, 20:38     ProgressBar, крутящийся, пока выполняется post-запрос #16
Примерно как-то так должно выглядеть

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) {
              \\
    }
 }
Yandex
Объявления
25.07.2012, 20:38     ProgressBar, крутящийся, пока выполняется post-запрос
Ответ Создать тему
Опции темы

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