Ich versuche, das Beobachter-Muster in einem meiner Aktivitäten und stellen die folgende Ausnahme zu implementieren, wenn notifyObservers
Aufruf:Observable.notifyObservers Nullpointer
java.lang.NullPointerException: Versuch Interface-Methode ‚int Java aufzurufen. util.List.size()‘auf null Objektreferenz
bei java.util.Observable.notifyObservers (Observable.java:131)
bei models.database.User.setPending (User.java:137)
Meine Implementierung ist ziemlich einfach: das Modell User
ist das Observable und die Aktivität ist der Beobachter (was nicht wichtig sein sollte, weil der Aktivitätscode nie erreicht wird). Mein Ziel ist es, über jede Änderung in den Eigenschaften des Feldes informiert zu werden.
Dies ist der relevante Teil in User
Klasse:
public class User extends Observable implements Parcelable {
private boolean pending;
public void setPending(boolean pending) {
synchronized (this) {
this.pending = pending;
}
setChanged();
notifyObservers(this);
}
}
Gibt es einen Fehler in meiner Umsetzung oder in meinem Verständnis hier? Ich habe keine Ahnung, was falsch ist, und ich bevorzuge es zu lösen, anstatt zur RX-Implementierung überzugehen.
EDIT: Dies ist der MainActivity
Code, der nie erreicht:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Get session variables from previous activity (LoginActivity/SplashActivity)
user = getIntent().getExtras().getParcelable(getString(R.string.e_user)); //Receiving user from previous activity, assured to be non-null
//Add observer on user, so we'll be able to update drawer in case of modification
user.addObserver(this);
}
@Override
public void update(Observable observable, Object o) {
drawerBuilder.setUser(user);
}
Welches ist Line # 137 in Benutzerklasse – Rahul
@Rasi Die Zeile von 'notifyObservers'. –
@NeriaNachum Können Sie den vollständigen Code – Rahul