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

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

Войти
Регистрация
Восстановить пароль
 
 
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,310
#1

Запретить смену ориентации экрана пока идет загрузка - Программирование Android

09.07.2016, 20:26. Просмотров 365. Ответов 15
Метки нет (Все метки)

У меня есть такой код, где активити создается из двух фрагментов и потом запускает поток в котором идет сетевой запрос. В ответ приходит JSON я выделяю информацию и загружаю ее в TextView во фрагменты и в фон картинку(через Handler), но проблема в том, что если пользователь повернет экран а картинка еще не загрузилась - сетевой запрос не отработал то приложение падает с
07-09 20:12:58.256 16645-16859/com.uifragmentsexample.user.myuifragments W/System.err: org.json.JSONException: No value for 3h
07-09 20:12:58.258 16645-16859/com.uifragmentsexample.user.myuifragments W/System.err: at org.json.JSONObject.get(JSONObject.java:354)
07-09 20:12:58.260 16645-16859/com.uifragmentsexample.user.myuifragments W/System.err: at org.json.JSONObject.getString(JSONObject.java:510)
Как быть как исправить ошибку? Вот функция парсинга JSON
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
 String ParseJSONForecast(String json) {
        String jsonResult = "";
        try {
            JSONObject JsonObject = new JSONObject(json);
            JSONObject city = jsonHelperGetJSONObject(JsonObject, "city");
            if (city != null) {
 
                String cod = jsonHelperGetString(JsonObject, "cod");
                Log.d("Func", cod);
                if (cod != null) {
                    if (cod.equals("200")) {
 
 
                        jsonResult += jsonHelperGetString(city, "name") + "\n";
                        jsonResult += jsonHelperGetString(city, "country") + "\n";
                        JSONObject coord = jsonHelperGetJSONObject(city, "coord");
                        if (coord != null) {
                            String lon = jsonHelperGetString(coord, "lon");
                            String lat = jsonHelperGetString(coord, "lat");
                            jsonResult += "lon: " + lon + "\n";
                            jsonResult += "lat: " + lat + "\n";
 
                        }
                        jsonResult += "\n";
                        Log.d("Func", jsonResult);
 
                        JSONArray list = jsonHelperGetJSONArray(JsonObject, "list");
 
                        if (list != null) {
                            Log.d("Func", "Here" + list.length());
                            for (int i = 0; i < list.length(); i++) {
                                JSONObject thisWeather = list.getJSONObject(i);
                                JSONObject main = jsonHelperGetJSONObject(thisWeather, "main");
 
                                if (main != null) {
                                    jsonResult += "temp: " + jsonHelperGetString(main, "temp") + "\n";
                                    jsonResult += "pressure: " + jsonHelperGetString(main, "pressure") + "\n";
                                    jsonResult += "humidity: " + jsonHelperGetString(main, "humidity") + "\n";
                                    jsonResult += "temp_min: " + jsonHelperGetString(main, "temp_min") + "\n";
                                    jsonResult += "temp_max: " + jsonHelperGetString(main, "temp_max") + "\n";
                                    jsonResult += "sea_level: " + jsonHelperGetString(main, "sea_level") + "\n";
                                    jsonResult += "grnd_level: " + jsonHelperGetString(main, "grnd_level") + "\n";
                                    jsonResult += "temp_kf: " + jsonHelperGetString(main, "temp_kf") + "\n";
                                    jsonResult += "\n";
 
                                }
                                JSONArray weather = jsonHelperGetJSONArray(thisWeather, "weather");
 
                                if (weather != null) {
                                    Log.d("Func", "Here" + "weather");
                                    for (int j = 0; j < weather.length(); j++) {
                                        JSONObject thisWeather1 = weather.getJSONObject(j);
                                        jsonResult += "weather " + ":\n";
                                        jsonResult += "id: " + jsonHelperGetString(thisWeather1, "id") + "\n";
 
                                        jsonResult += "main: " + jsonHelperGetString(thisWeather1, "main") + "\n";
                                        jsonResult += "description: " + jsonHelperGetString(thisWeather1, "description") + "\n";
                                        jsonResult += "\n";
                                    }
                                }
 
                                JSONObject clouds = jsonHelperGetJSONObject(thisWeather, "clouds");
                                String all = jsonHelperGetString(clouds, "all");
                                jsonResult += "clouds: " + all + "\n";
                                Log.d("Func", all);
                                JSONObject wind = jsonHelperGetJSONObject(thisWeather, "wind");
                                String speed = jsonHelperGetString(wind, "speed");
                                jsonResult += "speed: " + speed + "\n";
                                Log.d("Func", speed);
                                String deg = jsonHelperGetString(wind, "deg");
                                jsonResult += "deg:" + deg + "\n";
                                Log.d("Func", deg);
                                JSONObject rain = jsonHelperGetJSONObject(thisWeather, "rain");
                                String h = "3h:" + jsonHelperGetString(rain, "3h");
                                jsonResult += h + "\n";
                                JSONObject sys = jsonHelperGetJSONObject(thisWeather, "sys");
                                String pod = jsonHelperGetString(sys, "pod");
                                jsonResult += "pod:" + pod + "\n";
                                Log.d("Func", pod);
                                String dt_txt = jsonHelperGetString(thisWeather, "dt_txt");
                                Log.d("Func", dt_txt);
                                jsonResult += "dt_txt:" + dt_txt + "\n";
                            }
                        }
                    }
                }
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
        Log.d("Func", jsonResult);
        return jsonResult;
    }
Добавлено через 55 секунд
Можно ли как то на время сетевого запроса(загрузки информации во фрагменты) запретить пользователю поворачивать экран?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.07.2016, 20:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Запретить смену ориентации экрана пока идет загрузка (Программирование Android):

Запретить смену ориентации экрана - Программирование Android
имеется проблема в большом весе приложения и нежелании делать отдельные фоны для активити для горизонтальной ориентации. Как сделать чтобы...

Как запретить смену ориентации при вызове DialogFragment? - Программирование Android
В активити вызывается DialogFragment, как запретить смену ориентации экрана пока он активен?

Изменение ориентации экрана - Программирование Android
здравствуйте. возник вопрос,допустим я программно запретил изменения экрана ...

Смена ориентации экрана - Программирование Android
в папке layout файл screen.xml &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; &lt;LinearLayout ...

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

Поведение после смены ориентации экрана - Программирование Android
Доброго времени суток. У меня есть 2 xml layout файла для вертикальной и горизонтальной ориентации дисплея c тем самим набором елементов....

15
Alexvp
108 / 72 / 8
Регистрация: 03.08.2014
Сообщений: 348
11.07.2016, 23:03 #16
Цитата Сообщение от yura91 Посмотреть сообщение
Если запретить системе убивать сервис это не спасет его от падения от крешей
Если юзер долбанет по смартфону молотком, то никакие программисткие уловки тоже не помогут Не надо доходить до крайностей.
Цитата Сообщение от yura91 Посмотреть сообщение
А как правильно подсчитывать контрольные суммы?
Вы пробовали воспользоваться Гуглом? Тут не ясли, каждому шагу учить. Вам подсказали идею, далее ройте сами.
0
11.07.2016, 23:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.07.2016, 23:03
Привет! Вот еще темы с ответами:

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

Задний фон при смене ориентации экрана - Программирование Android
Здравствуйте! Мне надо чтобы фон не сжимался так, а как в HTML оптимизировал под размер экрана... Заранее спасибо! (Приложение и картинка...

SurfaceView при изменении ориентации экрана перегружается - Программирование Android
при создании тетриса возник вопрос. один из моих классов расширяет класс SurfaceView public class TetrisView extends SurfaceView ...

При смене ориентации экрана накладываются фрагменты - Программирование Android
Юзаю Android.Support.V4.App.Fragment, вроде бы все нормально. При переключении из меню фрагменты скрываю отправляя в &quot;стек&quot; а кликнутый...


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

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

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