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

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

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

Не получается создать запрос Volley в фрагменте - Программирование Android

22.05.2015, 22:09. Просмотров 254. Ответов 0
Метки нет (Все метки)

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
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 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 {
 
    // Movies json url
    private static final String url = "http://animalface.ru/mobile/news";
 
    private List<News> newsList = new ArrayList<News>();
    private ListView listView;
    private VolleyListAdapter volleyAdapter;
 
    // Progress
    private ProgressDialog pDialog;
 
    public NewsFragment(){}
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
 
            View rootView = inflater.inflate(R.layout.fragment_news, container, false);
 
            //pDialog = ProgressDialog.show(getActivity(), null, "Загрузка данных ...", true);
 
            // пример как добраться до объекта
            // listView = (ListView) rootView.findViewById(R.id.list);
            //Log.v("My Project", "Логи");
 
            RequestQueue queue = Volley.newRequestQueue(getActivity());
 
            JsonArrayRequest newsReqest = new JsonArrayRequest(url, 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());
 
                }
            });
 
            queue.add(newsReqest);
 
            return rootView;
        }
}
Запрос рабочий, тестировал его в mainActivity поместил во фрагмент перестал работать ...
Ошибка:

java.lang.NullPointerException: Attempt to invoke virtual method 'void ru.animalface.app.adapter.VolleyListAdapter.notifyDataSetChanged()' on a null object reference

Добавлено через 26 минут
Спасибо разобрался может кому пригодится:



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
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 {
 
    // Movies json url
    private static final String url = "http://animalface.ru/mobile/news";
 
    private List<News> newsList = new ArrayList<News>();
    private ListView listView;
    private VolleyListAdapter volleyAdapter;
 
    // Progress
    private ProgressDialog pDialog;
 
    public NewsFragment(){}
 
    @Override
    public void onStart() {
        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);
 
            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(url, 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);
 
 
            return rootView;
        }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.05.2015, 22:09     Не получается создать запрос Volley в фрагменте
Посмотрите здесь:

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

Библиотека Volley - Программирование Android
Всем привет! Читал туториал про библиотеку Volley и простой запрос к удаленной БД. Ребят, объясните, пожалуйста функцию метода Map? Что он...

Volley делает повторные запросы - Программирование Android
Скажите пожалуйста, установил библиотеку Volley. Сделал запрос, который принимает настройки. Все это висит в onCreate. Так вот когда я...

Нет функции add Volley - Программирование Android
Здравствуйте, появилась надобность в post запросах на android использую код с данного сайта...

Не получается написать запрос для вызова 2 го Voprosa из базы - Программирование Android
Разрабатываю маленький Тест программу. Данный момент 3 категорий в каждом по 3 вопроса. Использую GridView. Категории выходят и в каждом...

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

Не получается создать два AsyncTask - Программирование Android
Всем привет. Вот так я создаю первый Task: public class MyTimerTask extends AsyncTask&lt;Void, Void, Void&gt; { private TextView...

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

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

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


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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