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

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

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

Неизвестный NullPointerExeption - Программирование Android

21.04.2015, 21:14. Просмотров 321. Ответов 10
Метки нет (Все метки)

Пишу активити, при вызове которого приосходит следующее:
С помощью библиотеки retrofit на сервер делается GET запрос с параметром. В ответ нам приходит массив объектов
Я описал для них модель, api. Метод который все это делает. в методе onCreate выношу в отдельный поток создание запроса, и в строчке
Java
1
users = api.users(jwtToken);
вместо того что бы заполнить массив, Он перевоходит в файл RuntimeInit.java и выполняет этот метод
Java
1
2
3
  public boolean onException(Object obj, Throwable e) {
        return false;
    }
Приложение крашится с ошибкой NullPointerExeption
Хотя, как мне кажется, все инициализировано.
Код привожу ниже
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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
 package com.sancho.clienttest;
 
import retrofit.Callback;
import retrofit.RetrofitError;
import retrofit.client.Response;
import retrofit.http.Body;
import retrofit.http.GET;
import retrofit.http.Header;
import retrofit.http.POST;
import retrofit.RestAdapter;
import android.content.SharedPreferences;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.EditText;
import android.widget.TextView;
 
import com.androidquery.AQuery;
 
 
public class SuccessLog extends ActionBarActivity {
 
    TextView text;
    TextView uInfo;
    SharedPreferences sPref;
    SharedPreferences sToken;
    user [] users;
    String jwtToken;
 
    public class user {
        private String id;
        private String username;
        private String email;
        private String group;
        private String sex;
        private String avatar;
        private String firstname;
        private String secondname;
 
        public user(String id, String username, String email, String group,String sex,String avatar, String firstname, String secondname){
            this.id = id;
            this.username = username;
            this.email = email;
            this.group = group;
            this.sex = sex;
            this.avatar = avatar;
            this.firstname = firstname;
            this.secondname = secondname;
        }
 
        public user(){}
 
        public String getId() {return id;}
        public void setId(String id) {this.id = id;}
        public String getUsername() {return username;}
        public void setUsername(String username) {this.username = username;}
        public String getEmail() {return email;}
        public void setEmail(String email) {this.email = email;}
        public String getGroup(){return group;}
        public void setGroup(String group) {this.group = group;}
        public String getSex() {return sex;}
        public void setSex(String sex) {this.sex = sex;}
        public String getAvatar() {return avatar;}
        public void setAvatar(String avatar) {this.avatar = avatar;}
        public String getFirstname() {return firstname;}
        public void setFirstname(String firstname) {this.firstname = firstname;}
        public String getSecondname() {return secondname;}
        public void setSecondname(String secondname) {this.secondname = secondname;}
 
 
 
    }
 
    public interface Api{
        public static final String URL ="http://178.62.42.66/api/v1";
        static final String USERS = "/users/";
 
 
        @GET(USERS)
       user [] users(@Header("Authorization") String jwtToken );
 
    }
 
    private void getUsers(String jwtToken){
        RestAdapter restAdapter = new RestAdapter.Builder()
                .setEndpoint(Api.URL)
                .build();
        Api api = restAdapter.create(Api.class);
        users = api.users(jwtToken);
       
    }
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.success_log);
        AQuery aq = new AQuery(this);
        aq.id(R.id.image1).image("http://178.62.42.66/static/images/avatars/default_avatar.png");
        text = (TextView) findViewById(R.id.textView5);
        uInfo = (TextView) findViewById(R.id.textView6);
 
        sPref = getSharedPreferences("MyPref",MODE_PRIVATE);
        String savedText = sPref.getString("token","");
        jwtToken = "JWT "+savedText;
 
 
        Runnable runnable = new Runnable() {
            public void run() {
 
                getUsers(jwtToken);
            }
        };
        Thread thread = new Thread(runnable);
        thread.start();
 
 
       // user [] users;
        uInfo.setText(users[0].getUsername()); //users[0].getUsername();
        text.setText(savedText);
 
 
    }
 
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_success_log, menu);
        return true;
    }
 
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
 
        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }
 
        return super.onOptionsItemSelected(item);
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.04.2015, 21:14     Неизвестный NullPointerExeption
Посмотрите здесь:

Создание объекта через xml разметку. NullPointerExeption - Программирование Android
Кажется у меня пробел в основах, я думал прописывая вью через разметку, при сборке создается экземпляр класса, и стоит лишь найти вьюшку по...

Неизвестный шифр - Криптография
Нами была перехвачена шифровка передаваемая с борта "U-571" в адрес командира "U-534". В загадку РефлекторА посвящена только первая леди...

Неизвестный диск - Flash-память
Здравствуйте. У меня был, вопрос. Постараюсь кратко. Флешка 32 Gb, закачан образ системы, потом отформатированная и убранная за...

Неизвестный процесс - Безопасность
Сегодня решил просканить процессы антивирусом и тут программа выдаёт мне найден неизвестный процесс: "Proccess ID 4756" - неизвестная...

Неизвестный алгоритм - Криптография
Требуется узнать алгоритм, но ничего в голову не лезет:...

Неизвестный трансформатор - Блоки питания
нашел трансформатор неизвестные характеристики .... есть только надписи с описанием витков ... я новичек в этом деле , моя цель из него...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
22.04.2015, 13:33     Неизвестный NullPointerExeption #2
строчка 119. массив users все еще null.
Alex_Gnatuyk
2 / 2 / 1
Регистрация: 04.12.2013
Сообщений: 16
22.04.2015, 18:35  [ТС]     Неизвестный NullPointerExeption #3
а разве в это строчке не идет заполнение?
Java
1
users = api.users(jwtToken)
;
В onCreate вызывается функция getUsers, внутри которой происходит заполнение массива users, собственно строчка
Java
1
 users = api.users(jwtToken);
Hedd
13 / 13 / 2
Регистрация: 21.01.2015
Сообщений: 131
22.04.2015, 18:52     Неизвестный NullPointerExeption #4
ноль уберите)
Java
1
uInfo.setText(users[].getUsername());
Alex_Gnatuyk
2 / 2 / 1
Регистрация: 04.12.2013
Сообщений: 16
22.04.2015, 21:19  [ТС]     Неизвестный NullPointerExeption #5
@Hedd если я уберу, то как я смогу обратиться к первому юзеру в массиве?
И я попробовал убрать, и возникла следующая ошибка: Unknown class: 'users[]'
Вот так она выглядит https://pp.vk.me/c622525/v622525459/...s2nAiE26vI.jpg
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,648
Завершенные тесты: 1
23.04.2015, 08:57     Неизвестный NullPointerExeption #6
Alex_Gnatuyk, ставьте точку останова на этой строке и смотрите что из параметров = null. Потом уже ищите почему он null.
Pablito
2414 / 1859 / 583
Регистрация: 12.05.2014
Сообщений: 6,596
Завершенные тесты: 1
23.04.2015, 09:37     Неизвестный NullPointerExeption #7
запускается поток, а потом следующей строкой идет обращение к массиву
где гарантия, что к этому моменту второй поток уже запишет все в массив?

какие-то вложенные паблик классы, вложенные интерфейсы, потоки сразу с onCreate - горе от ума какое-то
Alex_Gnatuyk
2 / 2 / 1
Регистрация: 04.12.2013
Сообщений: 16
24.04.2015, 21:26  [ТС]     Неизвестный NullPointerExeption #8
@Spelcrawler Видимо null потому что запускается в другом потоке, и не он не успевает отработать до вызова функции. Не подскажете как это можно исправить, то я совсем не представляю
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,648
Завершенные тесты: 1
24.04.2015, 22:07     Неизвестный NullPointerExeption #9
Ну тут либо через интерфейс, либо все в одном потоке делать.
Alex_Gnatuyk
2 / 2 / 1
Регистрация: 04.12.2013
Сообщений: 16
24.04.2015, 23:11  [ТС]     Неизвестный NullPointerExeption #10
@Spelcrawler Пробовал сделать в одном потоке, все равно выскакивает эта ошибка
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.04.2015, 23:20     Неизвестный NullPointerExeption
Еще ссылки по теме:

Неизвестный разъем - Электроника
Всем привет, попала в руки такая вот плата, никто не знает что за разъемы? Сбоку маркировка отсутствует.

Неизвестный вирус - Удаление вирусов
Проблема заключаетс в том, что был запущен файл, выглядищий,как архив. После запуска никаких внешних изменений, нажал удалить, файл изчез и...

Неизвестный шрифт - Web-дизайн
Здравствуйте. Товарищи дизайнеры и верстальщики, помогите, пожалуйста, опознать русский шрифт на логотипе (прикреплён). Нужно этим шрифтом...

неизвестный идентификатор - Free Pascal
Не могу понять, где ошибка, пишет "неизвестный идентификатор" на f,res; а также неверные параметры функции mys, хотя в тестирующей...


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

Или воспользуйтесь поиском по форуму:
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,648
Завершенные тесты: 1
24.04.2015, 23:20     Неизвестный NullPointerExeption #11
Alex_Gnatuyk, сложно так сразу сказать где ошибка. Самый лучший способ работы с потоками на андроид - через AsynkTask. В методе doInBackground выполняйте все что связано с сетью, а все что нужно после этого сделать с интерфейсом - в onPostExecute. И никаких проблем.
Yandex
Объявления
24.04.2015, 23:20     Неизвестный NullPointerExeption
Ответ Создать тему
Опции темы

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