CQM*_*CQM 13 static android facebook-android-sdk android-activity
我正在使用Facebook Android SDK,并希望在用户登录并获取用户对象后关闭我的Activity.在实践中,我正在存储它的一部分,但我想关闭活动,无论如何.
// 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
}
}
});
Run Code Online (Sandbox Code Playgroud)
IDE错误消息finish()是:"Cannot make a static reference to the non-static method finish() from the type Activity"
如何进行?
bcl*_*mer 29
在onCreate中创建对您的活动的引用
//onCreate
final Activity activity = this;
Run Code Online (Sandbox Code Playgroud)
然后,您可以在onCompleted回调中使用它
activity.finish();
Run Code Online (Sandbox Code Playgroud)
你可能必须做Activity activity全球化.
编辑2/26/2014:
请注意,finish()从静态方法调用可能是不好的做法.你正在告诉一个Activity具有它自己的生命周期的特定实例,它应该从静态方法关闭自己,没有任何生命周期或状态.理想情况下,你会finish()从具有绑定功能的东西中调用Activity.
对于某些人来说,bclymer 的方法可能不起作用。我的没有,使用最新的测试版 Android Studio...试试这个...
public class myActivity extends Activity {
public static Activity activity = null;
...
...
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.myActivity_layout);
activity = this;
....
....
}
}
Run Code Online (Sandbox Code Playgroud)
从同一包中的其他活动中,只需......
// use try catch to avoid errors/warning that may affect the
// next method execution
try {
myActivity.activity.finish();
} catch (Exception ignored) {}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13007 次 |
| 最近记录: |