 <p>You called a method that basically calls another method of the same signature </p> <pre><code>@Override public String userSignIn(String email, String password, String authType) throws Exception { login(email, password, authType, new OnLoginResponseCallback() { @Override </code></pre> <p>Instead, wherever you would call <code>userSignIn</code>, you call <code>login</code>, and pass in that anonymous class. You can't return from these inner methods, because that isn't how callbacks work. You use the parameters of the interface methods to "continue" your logic. Like, do login, callback to the main function with some user info, use this info to make a new request, have a callback waiting for that data, that passes back data to some other method. It's all <code>void</code> methods calling other methods. No <code>return</code> statements </p> <p>Although, in Javascript, you can read this </p> <p><a href="http://stackoverflow.com/questions/6847697/how-to-return-value-from-an-asynchronous-callback-function">How to return value from an asynchronous callback function?</a></p>