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

Беда с парсингом - Android

Войти
Регистрация
Восстановить пароль
 
Tro0P
0 / 0 / 0
Регистрация: 14.11.2015
Сообщений: 24
26.11.2015, 00:48     Беда с парсингом #1
в приложении при запуске в onCreate, должны динамически создаваться кнопки исходя из количества эл-то String [], этот массив возвращается в результате метода парсинга сайта новостей. Метод рабочий, проверял в java SE приложении. при запуске выдаёт ошибку, не могу понять причины
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
  protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
 
        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });
        try {
            News_Parsing newsParsing=new News_Parsing();
            Document doc = Jsoup.connect("http://ria.ru/export/rss2/politics/index.xml").timeout(5000).get();
            Elements news = doc.select("item title");
            Title=new String[newsParsing.parsingTitle(news).length];
            Title=newsParsing.parsingTitle(news);
 
        //Elements news = doc.select("ss");
        lMain=(LinearLayout)  findViewById(R.id.lMain);
       // z=new int[20];
        newBtn=new Button[Title.length];
        for(int k = 0; k < Title.length; k++){
            newBtn[k] = new Button(this);
            newBtn[k].setText(Title[k]);
            // button.setOnClickListener(listener);
            newBtn[k].setId(View.generateViewId());
            newBtn[k].setOnClickListener(this);
            lMain.addView(newBtn[k], 200, 500);
        }}
        catch (IOException e){
            e.printStackTrace();
        }
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2015, 00:48     Беда с парсингом
Посмотрите здесь:

C++ Помогите с парсингом С++!!!
Помогите с парсингом C#
Помогите с парсингом текста PHP ООП
Android Беда с eclipse
Беда с приложением Android
PHP Непонятки с парсингом
C++ Калькулятор с парсингом ввода
PHP Запар с парсингом
Java SE Беда с парсингом
Запрет на смену символьного кода, Беда, такая беда 1с 1С Битрикс
Невыходит с парсингом PHP Сети

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mikalai
248 / 224 / 91
Регистрация: 11.01.2015
Сообщений: 643
26.11.2015, 01:11     Беда с парсингом #2
Tro0P, нельзя обращаться в сеть в основном потоке. Используй AsyncTask
Tro0P
0 / 0 / 0
Регистрация: 14.11.2015
Сообщений: 24
29.11.2015, 18:28  [ТС]     Беда с парсингом #3
переделал след. образом
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
53
54
55
56
57
58
59
 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
 
        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });
 
        lMain=(LinearLayout) findViewById(R.id.lMain);
        scroll=(ScrollView) findViewById(R.id.scroll);
        new AsyncT().execute();
 
    }
 
    @Override
    public void onClick(View v) {
        for (int i=0;i<button.length;i++){
            if(v.getId()==button[i].getId()){
                button[i].setText(""+i);
            }
        }
 
    }
 
    class AsyncT extends AsyncTask<Void,Void,Void> {
        @Override
        protected Void doInBackground(Void... params) {
            return null;
        }
 
        protected void onPostExecute (Void result){
            Document doc;
            doc=null;
            try{
                doc = Jsoup.connect("http://ria.ru/export/rss2/politics/index.xml").timeout(5000).get();
            } catch (IOException e){
                e.printStackTrace();
            }
            Elements news=doc.select("title");
            newsPars=new NewsPars();
            title=newsPars.parsingTitle(news);
            title=newsPars.parsingTitle(news);
            for (int i=0;i<title.length;i++){
                button=new Button[title.length];
                button[i]=new Button(pc.vorgul.testnewsparser.MainActivity.this);
                button[i].setText(title[i]);
                button[i].setId(View.generateViewId());
                button[i].setOnClickListener(pc.vorgul.testnewsparser.MainActivity.this);
                lMain.addView(button[i],200,200);
            }
        }
    }
ошибка выскакивает на строке
Java
1
 doc = Jsoup.connect("http://ria.ru/export/rss2/politics/index.xml").timeout(5000).get();
выбрасывается исключение android.os.NetworkOnMainThreadException, подскажите как решить проблему
Mikalai
248 / 224 / 91
Регистрация: 11.01.2015
Сообщений: 643
29.11.2015, 18:35     Беда с парсингом #4
Jsoup.connect нужно вызывать в doInBackground
dajver
 Аватар для dajver
406 / 270 / 18
Регистрация: 18.09.2010
Сообщений: 1,106
29.11.2015, 18:42     Беда с парсингом #5
Цитата Сообщение от Mikalai Посмотреть сообщение
Jsoup.connect нужно вызывать в doInBackground
Да по сути перенести весь код в doInBackground
Tro0P
0 / 0 / 0
Регистрация: 14.11.2015
Сообщений: 24
29.11.2015, 18:58  [ТС]     Беда с парсингом #6
переделал так:
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
 class AsyncT extends AsyncTask<Void,Void,Void> {
        @Override
        protected Void doInBackground(Void... params) {
            doc=null;
            try{
                doc = Jsoup.connect("http://ria.ru/export/rss2/politics/index.xml").timeout(5000).get();
            } catch (IOException e){
                e.printStackTrace();
            }
            return null;
        }
 
        protected void onPostExecute (Void result){
           /* Document doc;
            doc=null;
            try{
                doc = Jsoup.connect("http://ria.ru/export/rss2/politics/index.xml").timeout(5000).get();
            } catch (IOException e){
                e.printStackTrace();
            }*/
            Elements news=doc.select("title");
            newsPars=new NewsPars();
            title=newsPars.parsingTitle(news);
            title=newsPars.parsingTitle(news);
            for (int i=0;i<title.length;i++){
                button=new Button[title.length];
                button[i]=new Button(pc.vorgul.testnewsparser.MainActivity.this);
                button[i].setText(title[i]);
                button[i].setId(View.generateViewId());
                button[i].setOnClickListener(pc.vorgul.testnewsparser.MainActivity.this);
                lMain.addView(button[i],200,200);
            }
        }
    }

Добавлено через 11 минут
разобрался, в андроид манифесте не был разрешен доступ к интернету.
Сори за глупые ошибки) по сути первое приложение делаю, спасибо за помощь
Yandex
Объявления
29.11.2015, 18:58     Беда с парсингом
Ответ Создать тему
Опции темы

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