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

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

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

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

21.04.2015, 21:14. Просмотров 327. Ответов 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);
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.04.2015, 21:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Неизвестный NullPointerExeption (Программирование Android):

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

Неизвестный вирус - Удаление вирусов
Здравствуйте.Атаковал неизвестный вирус.Ни одним антивирусом не ловится.Стоял лицензионный др веб,стал глючить(сканер потерял связь с...

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

Неизвестный вирус(ы) - Удаление вирусов
После установки свежей системы некорректно работает Internet Explorer, кое как удается установить Opera(в безопасном режиме). После запуска...

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

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

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

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

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

Неизвестный идентификатор ''b'' - Turbo Pascal
Вычисляю y=b*ln(sin(x)). program log; var d : real; function fun (b,x:real):real; var y:real; begin ...

неизвестный индификатор - Delphi
Подскажите вот в этой строке lcbtd.TabIndex:=i; вылезает ошибка Undeclared identifier: Значит ли это ,что данного свойства просто...

Неизвестный Биос - BIOS
Здравствуйте,имеется мать Asus P8H61 ревизия 1.00,стоял биос 0408 дата выпуcка 04-08-2011 и стоял проц i3 2100.Потом поставил i5 2300 и...


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

Или воспользуйтесь поиском по форуму:
11
Yandex
Объявления
24.04.2015, 23:20
Ответ Создать тему
Опции темы

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