Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 56
1

NullPointExeption

18.10.2016, 23:56. Показов 1904. Ответов 20
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Выкидывает NullPointExeption при загрузки данных с Parse.
java.lang.NullPointerException: Attempt to invoke virtual method 'java.io.File com.parse.ParsePlugins.getParseDir()' on a null object reference
java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.widget.ListView.findViewById(int)' on a null object reference

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
        import android.app.ProgressDialog;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
 
import com.parse.FindCallback;
import com.parse.ParseException;
import com.parse.ParseObject;
import com.parse.ParseQuery;
 
import java.util.List;
 
 
public class OneFragment extends Fragment {
 
    ListView listview;
    List<ParseObject> ob;
    ProgressDialog mProgressDialog=null;
    ArrayAdapter<String> adapter;
 
    // определяем массив типа String
 
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        final ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("_User");
        query.findInBackground(new FindCallback<ParseObject>() {
            @Override
            public void done(List<ParseObject> objects, ParseException e) {
                query.orderByDescending("_created_at");
                try {
                    ob = query.find();
                } catch (ParseException e1) {
                    Log.e("Error", e.getMessage());
                    e.printStackTrace();
                }
                catch (NullPointerException e3){
                    e3.printStackTrace();
                }
 
            }
        });
        try {
            listview = (ListView) listview.findViewById(R.id.listview);
            adapter = new ArrayAdapter<String>(getActivity(), R.layout.listview_item);
 
            for (ParseObject user : ob) {
                adapter.add((String) user.get("username"));
                listview.setAdapter(adapter);
            }
        } catch (NullPointerException e) {
            e.printStackTrace();
        }
 
      }
0
Лучшие ответы (1)
114 / 120 / 26
Регистрация: 29.01.2014
Сообщений: 609
19.10.2016, 09:48 2
Лучший ответ Сообщение было отмечено Renko17 как решение

Решение

1) есть ли разрешение на интернет в манифесте
2) правельно ли написано _User
3) поставьте дебаг на 36, 40, 44, 50, 54, 58 строчки и посмотрите куда оно зайдет
4) если заходит в фор, 54 строка, правельно ли написано "username"
5) прописали ли вы данные проекта парс в активити или аппликейшн?
примерно так:
Java
1
2
Parse.enableLocalDatastore(this);
Parse.initialize(this, "XXXXXX", "YYYYYY");
6) вы знаете что парс перестает работать через несколько месяцев?
1
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
19.10.2016, 09:53 3
listview = (ListView) listview.findViewById(R.id.listview);

это надо делать не в onCreate а в onCreateView, ПОСЛЕ того как view для фрагмента будет создано
и писать надо так
Java
1
listview = (ListView) view.listview.findViewById(R.id.listview);
вообще весь тот код надо бы перенести из onCreate как минимум в onCreateView или onStart - как там надо по задаче
1
0 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 56
19.10.2016, 11:43  [ТС] 4
Цитата Сообщение от Паблито Посмотреть сообщение
вообще весь тот код надо бы перенести из onCreate как минимум в onCreateView или onStart - как там надо по задаче
Переместил в onStart. Больше не ругается на listview, но выкидывает две NullPoimt:
Attempt to invoke virtual method 'java.io.File com.parse.ParsePlugins.getParseDir()' on a null object reference
Attempt to invoke interface method 'java.util.Iterator java.util.List.iterator()' on a null object reference


Ругается на строчки :
ob = query.find();

for (ParseObject user : ob)

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
public class OneFragment extends Fragment {
 
    ListView listview;
    List<ParseObject> ob;
    ProgressDialog mProgressDialog=null;
    ArrayAdapter<String> adapter;
 
    // определяем массив типа String
 
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
      }
    
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_one, null);
        listview = (ListView) view.findViewById(R.id.listview);
        return view;
    }
    public void onStart(){
        super.onStart();
        final ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("_User");
       query.findInBackground(new FindCallback<ParseObject>() {
            
            @Override
            public void done(List<ParseObject> objects, ParseException e) {
                query.orderByDescending("_created_at");
                try {
                    ob = query.find();
                } catch (ParseException e1) {
                    Log.e("Error", e.getMessage());
                    e.printStackTrace();
                }
                catch (NullPointerException e3){
                    e3.printStackTrace();
                }
 
            }
        });
 try {
 
            adapter = new ArrayAdapter<String>(getActivity(), R.layout.listview_item);
 
            for (ParseObject user : ob) {
                adapter.add((String) user.get("username"));
                listview.setAdapter(adapter);
            }
        } catch (NullPointerException e) {
            e.printStackTrace();
        }
 
    }
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
19.10.2016, 11:55 5
программируешь наугад?
0
0 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 56
19.10.2016, 12:01  [ТС] 6
Цитата Сообщение от shavuz Посмотреть сообщение
1) есть ли разрешение на интернет в манифесте
2) правельно ли написано _User
3) поставьте дебаг на 36, 40, 44, 50, 54, 58 строчки и посмотрите куда оно зайдет
4) если заходит в фор, 54 строка, правельно ли написано "username"
5) прописали ли вы данные проекта парс в активити или аппликейшн?
примерно так:
JavaВыделить код
Java
1
2
Parse.enableLocalDatastore(this);
Parse.initialize(this, "XXXXXX", "YYYYYY");
6) вы знаете что парс перестает работать через несколько месяцев?
1)Есть (<uses-permission android:name="android.permission.INTERNET" />) , но выкидывает NullPoint как-будто нет.
2-5) Да, всё прописано правильно так как код работает в обычном Activity (но не работает в Fragment)
6) Знаю. Проект на Heroku, который использует Parse SDK.

Добавлено через 49 секунд
Цитата Сообщение от Паблито Посмотреть сообщение
программируешь наугад?
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
19.10.2016, 12:09 7
всегда желательно показывать весь лог ошибок, а не выборочно пару строк
и делать так - криво и быдлокод, не нужно так писать
Java
1
2
3
4
5
6
try {
        } catch (NullPointerException e) {
            e.printStackTrace();
        }
 
    }
есть нормальные проверки на null
1
0 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 56
19.10.2016, 12:30  [ТС] 8
Цитата Сообщение от Паблито Посмотреть сообщение
всегда желательно показывать весь лог ошибок, а не выборочно пару строк
и делать так - криво и быдлокод, не нужно так писать

try {
* * * * } catch (NullPointerException e) {
* * * * * * e.printStackTrace();
* * * * }
}
есть нормальные проверки на null
Спасибо Паблито,
Вот весь код и лог
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
package com.yuzzers.peopleandquestion;
 
import android.app.ProgressDialog;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
 
import com.parse.FindCallback;
import com.parse.ParseException;
import com.parse.ParseObject;
import com.parse.ParseQuery;
 
import java.util.List;
 
 
public class OneFragment extends Fragment {
 
    ListView listview;
    List<ParseObject> ob;
    ProgressDialog mProgressDialog=null;
    ArrayAdapter<String> adapter;
 
    // определяем массив типа String
 
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
      }
 
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_one, null);
        listview = (ListView) view.findViewById(R.id.listview);
        return view;
    }
    public void onStart(){
        super.onStart();
        final ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("_User");
        query.findInBackground(new FindCallback<ParseObject>() {
 
            @Override
            public void done(List<ParseObject> objects, ParseException e) {
                query.orderByDescending("_created_at");
                try {
                    ob = query.find();
                } catch (ParseException e1) {
                    e1.printStackTrace();
                }
 
 
            }
        });
 
        adapter = new ArrayAdapter<String>(getActivity(), R.layout.listview_item);
        if (ob!=null){
 
            for (ParseObject user : ob) {
                adapter.add((String) user.get("username"));
                listview.setAdapter(adapter);
            }
        }
 
        }
    }
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.yuzzers.peopleandquestion, PID: 4178
java.lang.NullPointerException: Attempt to invoke virtual method 'java.io.File com.parse.ParsePlugins.getParseDir()' on a null object reference
at com.parse.Parse.getParseDir(Parse.java:516)
at com.parse.ParseCorePlugins.getCurrentUserController(ParseCorePlugins.java:130)
at com.parse.ParseUser.getCurrentUserController(ParseUser.java:55)
at com.parse.ParseUser.getCurrentUserAsync(ParseUser.java:883)
at com.parse.ParseQuery.getUserAsync(ParseQuery.java:960)
at com.parse.ParseQuery$3.call(ParseQuery.java:1218)
at com.parse.ParseQuery$3.call(ParseQuery.java:1215)
at com.parse.ParseQuery.doWithRunningCheck(ParseQuery.java:1154)
at com.parse.ParseQuery.findAsync(ParseQuery.java:1215)
at com.parse.ParseQuery.findInBackground(ParseQuery.java:1183)
at com.parse.ParseQuery.find(ParseQuery.java:1003)
at com.yuzzers.peopleandquestion.OneFragment$1.done(OneFragment.java:48)
at com.yuzzers.peopleandquestion.OneFragment$1.done(OneFragment.java:42)
at com.parse.ParseTaskUtils$2$1.run(ParseTaskUtils.java:116)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
0
111 / 111 / 43
Регистрация: 24.05.2015
Сообщений: 329
19.10.2016, 12:44 9
Где инициализация этого листа?
Java
1
List<ParseObject> ob;
Что-то похожее на это)))
Java
1
List<ParseObject> ob = = new ArrayList<>();
0
114 / 120 / 26
Регистрация: 29.01.2014
Сообщений: 609
19.10.2016, 12:51 10
3 пункт где останавливается дебаг?

fraleyДобавлено через 1 минуту
этот лист приходит асинхронно из ответа парса, его не надо инициализировать, это делает парс
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
19.10.2016, 12:58 11
там по идее вообще не нужен массив ob
все надо делать в методе done
ob = query.find();
Java
1
2
3
4
5
6
7
8
9
objects = query.find();
adapter = new ArrayAdapter<String>(getActivity(), R.layout.listview_item);
        if (objects !=null){
 
            for (ParseObject user : objects ) {
                adapter.add((String) user.get("username"));
                listview.setAdapter(adapter);
            }
        }
0
0 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 56
19.10.2016, 13:19  [ТС] 12
Цитата Сообщение от shavuz Посмотреть сообщение
3 пункт где останавливается дебаг?
Останавливается на : query.findInBackground(new FindCallback<ParseObject>(). Проверял с помощью Breakpoint показывает query нулевым , хотя ,повторюсь, в Activity работает всё нормально.



Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
final ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("_User");
        query.findInBackground(new FindCallback<ParseObject>() {
 
            @Override
            public void done(List<ParseObject> objects, ParseException e) {
                query.orderByDescending("_created_at");
                try {
                    ob = query.find();
                } catch (ParseException e1) {
                    e1.printStackTrace();
                }
 
 
            }
        });
0
114 / 120 / 26
Регистрация: 29.01.2014
Сообщений: 609
19.10.2016, 13:22 13
на ней он в любом случае остановится, это еще до ответа, поставье брекпоинт тут:
query.orderByDescending("_created_at");
тут:
ob = query.find();
и тут:
e1.printStackTrace();


надо знать что происходит в Done
0
0 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 56
19.10.2016, 13:38  [ТС] 14
Цитата Сообщение от Паблито Посмотреть сообщение
там по идее вообще не нужен массив ob
все надо делать в методе done
ob = query.find();
Всё равно та же ошибка.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public void done(List<ParseObject> objects, ParseException e) {
                query.orderByDescending("_created_at");
                try {
                    objects = query.find();
                } catch (ParseException e1) {
                    e1.printStackTrace();
                }
                adapter = new ArrayAdapter<String>(getActivity(), R.layout.listview_item);
                if (objects!=null){
 
                    for (ParseObject user : objects) {
                        adapter.add((String) user.get("username"));
                        listview.setAdapter(adapter);
                    }
                }
 
 
            }
0
114 / 120 / 26
Регистрация: 29.01.2014
Сообщений: 609
19.10.2016, 13:39 15
вот так я использовал парс в последний раз и это работает:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
List<ParseObject> mCategories;  // мембер класса
 ParseQuery query = new ParseQuery("picture");
        query.addDescendingOrder("createdAt");
        query.setLimit(5);
        query.findInBackground(new FindCallback() {
            @Override
            public void done(List objects, ParseException e) {
            }
 
            @Override
            public void done(Object o, Throwable throwable) {
                if (o instanceof List) {
                   mCategories = (List<ParseObject>) o;
                   mAdapter = new //......
 
                    }             
                }
            }
        });
0
0 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 56
19.10.2016, 13:55  [ТС] 16
Цитата Сообщение от shavuz Посмотреть сообщение
надо знать что происходит в Done
вот
Миниатюры
NullPointExeption  
0
0 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 56
19.10.2016, 13:58  [ТС] 17
Цитата Сообщение от shavuz Посмотреть сообщение
вот так я использовал парс в последний раз и это работает:
Этот код работает в обычной Activity, но не работает в Fragment
0
114 / 120 / 26
Регистрация: 29.01.2014
Сообщений: 609
19.10.2016, 14:28 18
этот код я достал из фрагмента

Добавлено через 2 минуты
суда по вашему дебагу вы ничего не получаете в ответе, ваш лист - наль, не правельный запрос. что в парс эксепшн?
0
Pablito
19.10.2016, 14:41
  #19

Не по теме:

правельно писать "правИльно"

0
0 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 56
19.10.2016, 14:45  [ТС] 20
Цитата Сообщение от shavuz Посмотреть сообщение
суда по вашему дебагу вы ничего не получаете в ответе, ваш лист - наль, не правельный запрос. что в парс эксепшн?
[JAVA]
0
19.10.2016, 14:45
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru