I am using the Facebook Android SDK and want to close my Activity after a user logs in and gets the user object. In practice I am storing parts of it but I want to close the activity regardless.
// make request to the /me API
Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {
// callback after Graph API response with user object
@Override
public void onCompleted(GraphUser user, Response response) {
if (user != null) {
finish(); // causes errors
}
}
});
The IDE error message on finish()
is: "Cannot make a static reference to the non-static method finish() from the type Activity"
how to proceed?
Create a reference to your activity in onCreate with
//onCreate
final Activity activity = this;
Then you can use that in your onCompleted callback
activity.finish();
You might have to make Activity activity
global.
EDIT 2/26/2014:
Note that calling finish()
from a static method is probably bad practice. You are telling a specific instance of an Activity
with it's own lifecycle that it should shut itself down from a static method, something without any lifecycle or state. Ideally you'd call finish()
from something with a binding to the Activity
.