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

Неизвестный NullPointerExeption - Android

Восстановить пароль Регистрация
 
Alex_Gnatuyk
2 / 2 / 1
Регистрация: 04.12.2013
Сообщений: 15
21.04.2015, 21:14     Неизвестный NullPointerExeption #1
Пишу активити, при вызове которого приосходит следующее:
С помощью библиотеки 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
Посмотрите здесь:

Неизвестный вирус
Free Pascal неизвестный идентификатор
Неизвестный шрифт
Неизвестный трансформатор
Неизвестный алгоритм
Неизвестный шифр
Delphi Неизвестный тип
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Netscape
 Аватар для 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
Сообщений: 15
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
Сообщений: 129
22.04.2015, 18:52     Неизвестный NullPointerExeption #4
ноль уберите)
Java
1
uInfo.setText(users[].getUsername());
Alex_Gnatuyk
2 / 2 / 1
Регистрация: 04.12.2013
Сообщений: 15
22.04.2015, 21:19  [ТС]     Неизвестный NullPointerExeption #5
@Hedd если я уберу, то как я смогу обратиться к первому юзеру в массиве?
И я попробовал убрать, и возникла следующая ошибка: Unknown class: 'users[]'
Вот так она выглядит https://pp.vk.me/c622525/v622525459/...s2nAiE26vI.jpg
Spelcrawler
521 / 491 / 110
Регистрация: 12.03.2014
Сообщений: 1,640
Завершенные тесты: 1
23.04.2015, 08:57     Неизвестный NullPointerExeption #6
Alex_Gnatuyk, ставьте точку останова на этой строке и смотрите что из параметров = null. Потом уже ищите почему он null.
Паблито
не спать!
1868 / 1602 / 493
Регистрация: 12.05.2014
Сообщений: 5,796
Завершенные тесты: 1
23.04.2015, 09:37     Неизвестный NullPointerExeption #7
запускается поток, а потом следующей строкой идет обращение к массиву
где гарантия, что к этому моменту второй поток уже запишет все в массив?

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

C++ Linux Неизвестный баг
Неизвестный запрос JavaScript
Неизвестный Биос BIOS
Неизвестный вирус(ы)
Создание объекта через xml разметку. NullPointerExeption Android

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

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

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