java - Value not changed by @Override Method -
i want check if user logged in in app, have method loggedin():
private boolean loggedin = false; public boolean loggedin() { map<string, object> parameters = new hashmap<string, object>(); parameters.put("id", "me"); buddy.get("users/me", parameters, new buddycallback<user>(user.class) { @override public void completed(buddyresult<user> result) { if (result.getissuccess()) { setloggedin(true); } } }); return loggedin; } public void setloggedin(boolean loggedin){ this.loggedin = loggedin; } so when user logged in, executes setloggedin(true); line, works.
the problem method loggedin() returns false, whether setloggedin(true);is executed or not. has @override annotation?
when call loggedin(), performing potentially asynchronous call buddy.get. means buddy.get spawning new thread, on completed called.
the safe way handle change boolean loggedin() void loggedin(). give whatever class in kind of property change listener, example:
public interface onloggedinchangedlistener { public void onloggedinchange(boolean loggedin); } private onloggedinchangedlistener loggedinlistener; // list of weak references public void setonloggedinchangedlistener(onloggedinchangedlistener l) { loggedinlistener = l; } public void setloggedin(boolean loggedin){ this.loggedin = loggedin; if (loggedinlistener != null) { loggedinlistener.onloggedinchange(loggedin); } } alternatively, have more general property change listener, , associate different properties of class property enum. ie, onloggedinchangedlistener become propertychangelistener<myclasspropertyenum> , enum myclasspropertyenum { logged_in }
another option loggedin() accept listener argument, call after call setloggedin()
Comments
Post a Comment