NullPointerExeption Android. retrofit
Пишу активити, при вызове которого приосходит следующее: С помощью библиотеки retrofit на сервер делается GET запрос с параметром. В ответ нам приходит массив объектов Я описал для них модель, api. Метод который все это делает. в методе onCreate выношу в отдельный поток создание запроса, и в строчке
users = api.users(jwtToken);
вместо того что бы заполнить массив, Он переходит в файл RuntimeInit.java и выполняет этот метод
public boolean onException(Object obj, Throwable e) {
return false;
}
Приложение крашится с ошибкой NullPointerExeption Хотя, как мне кажется, все инициализировано. Код привожу ниже
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);
}
}
ЛОГИ ниже
04-22 19:10:13.212 1102-1102/com.sancho.clienttest D/dalvikvm﹕ Late-enabling CheckJNI
04-22 19:10:13.244 1102-1102/com.sancho.clienttest I/dalvikvm﹕ Could not find method android.view.ViewGroup.onNestedScrollAccepted, referenced from method android.support.v7.internal.widget.ActionBarOverlayLayout.onNestedScrollAccepted
04-22 19:10:13.244 1102-1102/com.sancho.clienttest W/dalvikvm﹕ VFY: unable to resolve virtual method 11434: Landroid/view/ViewGroup;.onNestedScrollAccepted (Landroid/view/View;Landroid/view/View;I)V
04-22 19:10:13.244 1102-1102/com.sancho.clienttest D/dalvikvm﹕ VFY: replacing opcode 0x6f at 0x0000
04-22 19:10:13.244 1102-1102/com.sancho.clienttest I/dalvikvm﹕ Could not find method android.view.ViewGroup.onStopNestedScroll, referenced from method android.support.v7.internal.widget.ActionBarOverlayLayout.onStopNestedScroll
04-22 19:10:13.244 1102-1102/com.sancho.clienttest W/dalvikvm﹕ VFY: unable to resolve virtual method 11440: Landroid/view/ViewGroup;.onStopNestedScroll (Landroid/view/View;)V
04-22 19:10:13.244 1102-1102/com.sancho.clienttest D/dalvikvm﹕ VFY: replacing opcode 0x6f at 0x0000
04-22 19:10:13.244 1102-1102/com.sancho.clienttest I/dalvikvm﹕ Could not find method android.support.v7.internal.widget.ActionBarOverlayLayout.stopNestedScroll, referenced from method android.support.v7.internal.widget.ActionBarOverlayLayout.setHideOnContentScrollEnabled
04-22 19:10:13.244 1102-1102/com.sancho.clienttest W/dalvikvm﹕ VFY: unable to resolve virtual method 9116: Landroid/support/v7/internal/widget/ActionBarOverlayLayout;.stopNestedScroll ()V
04-22 19:10:13.244 1102-1102/com.sancho.clienttest D/dalvikvm﹕ VFY: replacing opcode 0x6e at 0x000e
04-22 19:10:13.248 1102-1102/com.sancho.clienttest I/dalvikvm﹕ Could not find method android.content.res.TypedArray.getChangingConfigurations, referenced from method android.support.v7.internal.widget.TintTypedArray.getChangingConfigurations
04-22 19:10:13.248 1102-1102/com.sancho.clienttest W/dalvikvm﹕ VFY: unable to resolve virtual method 404: Landroid/content/res/TypedArray;.getChangingConfigurations ()I
04-22 19:10:13.248 1102-1102/com.sancho.clienttest D/dalvikvm﹕ VFY: replacing opcode 0x6e at 0x0002
04-22 19:10:13.248 1102-1102/com.sancho.clienttest I/dalvikvm﹕ Could not find method android.content.res.TypedArray.getType, referenced from method android.support.v7.internal.widget.TintTypedArray.getType
04-22 19:10:13.248 1102-1102/com.sancho.clienttest W/dalvikvm﹕ VFY: unable to resolve virtual method 426: Landroid/content/res/TypedArray;.getType (I)I
04-22 19:10:13.248 1102-1102/com.sancho.clienttest D/dalvikvm﹕ VFY: replacing opcode 0x6e at 0x0002
04-22 19:10:13.300 1102-1102/com.sancho.clienttest D/libEGL﹕ loaded /system/lib/egl/libEGL_genymotion.so
04-22 19:10:13.304 1102-1102/com.sancho.clienttest D/﹕ HostConnection::get() New Host Connection established 0xb8798b68, tid 1102
04-22 19:10:13.324 1102-1102/com.sancho.clienttest D/libEGL﹕ loaded /system/lib/egl/libGLESv1_CM_genymotion.so
04-22 19:10:13.324 1102-1102/com.sancho.clienttest D/libEGL﹕ loaded /system/lib/egl/libGLESv2_genymotion.so
04-22 19:10:13.372 1102-1102/com.sancho.clienttest W/EGL_genymotion﹕ eglSurfaceAttrib not implemented
04-22 19:10:13.384 1102-1102/com.sancho.clienttest D/OpenGLRenderer﹕ Enabling debug mode 0
04-22 19:10:19.488 1102-1105/com.sancho.clienttest D/dalvikvm﹕ GC_CONCURRENT freed 177K, 3% free 8820K/9024K, paused 2ms+0ms, total 6ms
04-22 19:10:19.544 1102-1102/com.sancho.clienttest W/EGL_genymotion﹕ eglSurfaceAttrib not implemented
04-22 19:10:28.356 1102-1105/com.sancho.clienttest D/dalvikvm﹕ GC_CONCURRENT freed 264K, 4% free 8944K/9236K, paused 1ms+0ms, total 3ms
04-22 19:10:28.380 1102-1102/com.sancho.clienttest D/AndroidRuntime﹕ Shutting down VM
04-22 19:10:28.380 1102-1102/com.sancho.clienttest W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0xa6223908)
04-22 19:10:28.380 1102-1102/com.sancho.clienttest E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.sancho.clienttest/com.sancho.clienttest.SuccessLog}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5041)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.sancho.clienttest.SuccessLog.onCreate(SuccessLog.java:119)
at android.app.Activity.performCreate(Activity.java:5104)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5041)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)