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

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

Войти
Регистрация
Восстановить пароль
 
motoroller
2 / 2 / 1
Регистрация: 01.05.2012
Сообщений: 116
#1

Как предотвратить множественную загрузку onCreateView в фрагменте - Программирование Android

22.05.2015, 22:21. Просмотров 223. Ответов 2
Метки нет (Все метки)

Как предотвратить множественную загрузку onCreateView в фрагменте?

Запускаю фрагмет он подгружает данные с сервера. При попороте экрана загрука идет снова.
Как это предотвратить?

Запись в манифесте : android:configChanges="orientation"

Не помогает.

Скажи как быть?
Или в какое событие надо поместить выполнение запроса, что бы он выполнился один раз при запуске фрагмента?

Добавлено через 5 минут
Может кому пригодится готовый запрос во фрагменте с помощью Volley

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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
package ru.animalface.app;
 
import android.app.Fragment;
import android.app.ProgressDialog;
import android.os.Bundle;
 
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.Toast;
 
 
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonArrayRequest;
import com.android.volley.toolbox.Volley;
 
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
 
import java.util.ArrayList;
import java.util.List;
 
import ru.animalface.app.adapter.VolleyListAdapter;
import ru.animalface.app.model.News;
 
 
public class NewsFragment extends Fragment {
    
    private static List<News> newsList = new ArrayList<News>();
    private static ListView listView;
    private static VolleyListAdapter volleyAdapter;
 
    // Progress
    private ProgressDialog pDialog;
 
    public NewsFragment(){}
 
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            super.onStart();
            Toast.makeText(getActivity(), "FirstFragment.onStart()",
                    Toast.LENGTH_LONG).show();
            Log.d("Fragment 1", "onStart");
        }
 
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
 
            View rootView = inflater.inflate(R.layout.fragment_news, container, false);
 
            // Load only one time when app is loading
            if (savedInstanceState == null) {
 
 
            pDialog = ProgressDialog.show(getActivity(), null, "Загрузка данных ...", true);
 
            listView = (ListView) rootView.findViewById(R.id.list);
            volleyAdapter = new VolleyListAdapter(getActivity(), newsList);
            listView.setAdapter(volleyAdapter);
 
            RequestQueue queue = Volley.newRequestQueue(getActivity());
 
 
            JsonArrayRequest newsReqest = new JsonArrayRequest("http://animalface.ru/mobile/news", new Response.Listener<JSONArray>() {
                        @Override
                        public void onResponse(JSONArray response) {
                            pDialog.hide();
 
                            Log.v("My Project", response.toString());
 
 
                            // Parsing json
                            for (int i = 0; i < response.length(); i++) {
                                try {
 
                                    JSONObject obj = response.getJSONObject(i);
                                    News news = new News();
                                    news.setTitle(obj.getString("title"));
                                    news.setImage(obj.getString("image"));
 
                                    news.setDate(obj.getString("datePrint"));
                                    news.setBody(obj.getString("body"));
 
 
 
                                    // adding movie to movies array
                                    newsList.add(news);
 
                                } catch (JSONException e) {
                                    e.printStackTrace();
                                }
 
                            }
 
                            // notifying list adapter about data changes
                            // so that it renders the list view with updated data
                            volleyAdapter.notifyDataSetChanged();
                        }
                    }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    pDialog.hide();
                    Log.v("My Project", error.getMessage());
 
                }
            });
 
            // Adding request to request queue
            //ru.animalface.app.app.AppController.getInstance().addToRequestQueue(newsReq);
            queue.add(newsReqest);
 
 
 
            } else {
                listView = (ListView) rootView.findViewById(R.id.list);
                volleyAdapter = new VolleyListAdapter(getActivity(), newsList);
                listView.setAdapter(volleyAdapter);
            }
            return rootView;
        }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.05.2015, 22:21     Как предотвратить множественную загрузку onCreateView в фрагменте
Посмотрите здесь:

Вывод во втором фрагменте длины текста, введённого в первом фрагменте активити - Программирование Android
Создать активити с двумя фрагментами. В первый фрагмент должен содержать поле ввода, второй текстовое поле. Выводить во втором фрагменте...

Как отследить закрытие/открытие drawer-а в другом фрагменте? - Программирование Android
Всем привет! У меня в приложении есть drawer при переходе по какому то пункту открывается определенный фрагмент. Так вот как мне...

Как обновить textview в фрагменте после обновления preference - Программирование Android
Вечер добрый. В общем потратил весь день что бы разобраться с этим вопросом, но все безуспешно. Необходимо обновить значение 2 textview...

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

Как сделать проверку обновлений и их загрузку? - Программирование Android
Есть приложение, хочу сделать так что бы при каждом входе смотрело нет ли обновлений на моем серваке, если есть то давало выдавало окно...

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

Остановить выполнение во фрагменте - Программирование Android
Есть для примера код который расположен в фрагменте. как остановить программу // Если номер введен неверно ...

Потоки в фрагменте не запустить? - Программирование Android
Не могу использовать потоки в фрагменте. использую конструкцию: new Thread() { @Override public void run() { ...code ...

MenuItemSelected не работает в фрагменте - Программирование Android
Метод return super.onMenuItemSelected(featureId, item); никак не хочет работать в фрагменте, почему? До работы приложения остаётся только...

Изменить из активити данные в фрагменте - Программирование Android
Есть Activity с PagerAdapter, в который грузятся фрагменты. В классе фрагмента данные берутся из БД и грузятся в ListView через адаптер...

Обработка физической кнопки в фрагменте - Программирование Android
День добрый! Столкнулся с такой проблемой. Есть фрагмент: package com.example.navigationsample; import java.io.IOException; ...

Обработать событие onBackPressed во фрагменте - Программирование Android
У меня есть фрагмент который запускается через транзакцию и как можно обработать в нем нажатие кнопки back и выполнить определенные...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
22.05.2015, 23:18     Как предотвратить множественную загрузку onCreateView в фрагменте #2
motoroller, в этом случае я обычно даю для изучения следующую статью: https://androidresearch.wordpress.co...n-orientation/
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
23.05.2015, 12:55     Как предотвратить множественную загрузку onCreateView в фрагменте #3
Цитата Сообщение от motoroller Посмотреть сообщение
Запись в манифесте : android:configChanges="orientation"
Не помогает.
Если нужна только портретная ориентация то в каждую активити надо поставить
XML
1
android:screenOrientation="portrait"
Ответ Создать тему
Опции темы

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