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

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

Войти
Регистрация
Восстановить пароль
 
AsfaltM
0 / 0 / 0
Регистрация: 07.04.2015
Сообщений: 13
#1

Не могу найти ошибку в приложении Earthquake - Программирование Android

10.08.2015, 13:19. Просмотров 228. Ответов 2
Метки нет (Все метки)

Добрый день.
Собственно пишу приложение по примеру из книги Рето Майер Андроид 4, глава 6, Earthquake. Написал точь в точь как в книге, при запуске приложения на экране висит значек загрузки и список землетрясений не выводится. Переписал парсер, тоже самое. Стало интересно почему же всё-таки не работает. Упростил все до минимума, так чтобы в методе refreshEarthquake просто в список ArrayList добавлялась строка, но эту строку из списка все равно не выводит на экран эмулятора, а приложение сообщает об ошибке. Бьюсь уже второй день, ошибку найти не могу.

<uses-permission android:name="android.permission.INTERNET" /> прописан

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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
public class Earthquake extends ActionBarActivity {
 
    private static final String TAG = "EARTHQUAKE";
    ArrayAdapter<String> aa;
    ArrayList<String> earthquakes = new ArrayList<>();
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_earthquake);
        ListView lv = (ListView)findViewById(R.id.listView);
 
        int layoutID = android.R.layout.simple_list_item_1;
        aa = new ArrayAdapter<String>(this, layoutID , earthquakes);
        lv.setAdapter(aa);
 
        Thread t = new Thread(new Runnable() {
            @Override
            public void run() {
                refreshEarthquakes();
            }
        });
        t.start();
 
    }
 
    private void refreshEarthquakes() {
 
        URL url;
        try {
            url = new URL("http://earthquake.usgs.gov/fdsnws/event/1/query?format=
                                       xml&starttime=2015-01-01&endtime=2015-01-04");
            URLConnection connection;
            connection = url.openConnection();
 
            HttpURLConnection httpConnection = (HttpURLConnection)connection;
            InputStream in = httpConnection.getInputStream();
 
            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
            DocumentBuilder db = dbf.newDocumentBuilder();
 
            Document dom = db.parse(in);
            Element docEle = dom.getDocumentElement();
 
            earthquakes.clear();
 
            NodeList nl = docEle.getElementsByTagName("event");
            if (nl != null && nl.getLength() > 0) {
                for (int i = 0 ; i < nl.getLength(); i++) {
                    Element entry = (Element)nl.item(i);
                    Element title = (Element)entry.getElementsByTagName("text").item(0);
                    Element latitude = (Element)entry.getElementsByTagName("latitude").item(0);
                    Element latitude2 = (Element)latitude.getElementsByTagName("value").item(0);
                    Element longitude = (Element)entry.getElementsByTagName("longitude").item(0);
                    Element longitude2 = (Element)longitude.getElementsByTagName("value").item(0);
                    Element when = (Element)entry.getElementsByTagName("time").item(0);
                    Element when2 = (Element)when.getElementsByTagName("value").item(0);
                    Element link = (Element)entry.getElementsByTagName("originID").item(0);
                    Element mag = (Element)entry.getElementsByTagName("mag").item(0);
                    Element mag2 = (Element)mag.getElementsByTagName("value").item(0);
 
                    String details = title.getFirstChild().getNodeValue();
                    String magValue = mag2.getFirstChild().getNodeValue();
                    String lan = latitude2.getFirstChild().getNodeValue();
                    String lon = longitude2.getFirstChild().getNodeValue();
                    String link2 = link.getFirstChild().getNodeValue();
                    String linkString = "http://" + link2.substring(7, link2.length());
                    String dt = when2.getFirstChild().getNodeValue();
                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                    Date qdate = new GregorianCalendar(0,0,0).getTime();
                    try {
                        qdate = sdf.parse(dt);
                    } catch (ParseException e) {
                        Log.d(TAG, "Date parsing exception.", e);
                    }
 
                    Location l = new Location("dummyGPS" + i);
                    l.setLatitude(Double.parseDouble(lan));
                    l.setLongitude(Double.parseDouble(lon));
                    int end =  magValue.length()-1;
                    double magnitude = Double.parseDouble(magValue.substring(0, end));
 
                    //Quake quake = new Quake(qdate, details, l, magnitude, linkString);
                    earthquakes.add(details);
                    aa.notifyDataSetChanged();
                    //addNewQuake(quake);
                }
            }
        } catch (MalformedURLException e) {
            Log.d(TAG, "MalformedURLException", e);
        } catch (IOException e) {
            Log.d(TAG, "IOException", e);
        } catch (ParserConfigurationException e) {
            Log.d(TAG, "Parser Configuration Exception", e);
        } catch (SAXException e) {
            Log.d(TAG, "SAX Exception", e);
        }
        finally {
 
        }
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.08.2015, 13:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не могу найти ошибку в приложении Earthquake (Программирование Android):

Не могу найти ошибку - Программирование Android
Выдает ошибку (unfortunately,*** has stopped) нз что делать вот логи 07-16 09:37:50.620: W/Resources(925): Converting to string:...

Не могу найти ошибку - Программирование Android
Здравствуйте! Помогите, пожалуйста, найти ошибку в коде: вот QuizGameActivity.java: package com.androidbook.triviaquiz; ...

Не могу найти ошибку - Программирование Android
у меня 4 диалога (2 времени и 2 даты) по нажатию на них всплывает соответствующий диалог,НО почему то по нажатию на два нижний диалога...

не могу найти ошибку! - Программирование Android
вот уже довольно длинный промежуток времени пытаюсь исправить работу приложения...ничего не получается...помогите пожалуйста,если не...

НЕ могу найти ошибку! - Программирование Android
Вот скрин кода: на экране два текста &quot;ДАТА&quot; и &quot;ВРЕМЯ&quot; по нажатию на &quot;дата&quot; должен выходить диалог &quot;ДАТЫ&quot;, а выходит диалог времени т.е жму...

не могу найти ошибку - Программирование Android
я пытаюсь запустить звуковой файл в приложении, при открытии новой страницы(layout)... вот мой код: package by.example.goder; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Mikalai
256 / 232 / 93
Регистрация: 11.01.2015
Сообщений: 655
10.08.2015, 14:38 #2
Похоже ты пытаешься обновить View-элемент не из UI-потока. Так сделать не получится. Почитай про handler или AsyncTask. А вообще нужно лог с ошибкой показывать.
AsfaltM
0 / 0 / 0
Регистрация: 07.04.2015
Сообщений: 13
10.08.2015, 16:37  [ТС] #3
Все верно, дело было в этом. Запустил с хэндлером, все заработало.
Спасибо)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.08.2015, 16:37
Привет! Вот еще темы с ответами:

Не могу найти ошибку в коде для apk приложения - Программирование Android
Начал изучать Java и написание под Андроид. Eclipse с модулем имеется. Простая программка: ToggleButton, от состояния которого меняется...

Не могу найти ошибку в программном коде Eclipse, Android - Программирование Android
Кто может помочь найти ошибку в программном коде нужно чтобы программа из вектора &quot;по координатам a,d и c,b&quot; вывела расстояние &quot;h&quot; также и...

Как отлавливать ошибку в приложении у пользователей - Программирование Android
Предположим что написал приложение. Отладил на все до чего ручки добрались, опубликовал. Приложение скачал Вася Пупкин, с непонятно каким...

Не могу найти ошибку в консольном приложении (windows) - C#
код: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { ...


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

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

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