【发布时间】:2015-02-21 05:40:05
【问题描述】:
我在尝试将静态引用引用到 Android Java 中的非静态方法时遇到了一些问题。基本上从我的详细信息类中,当我的按钮 onClick 时,它将在另一个类中执行 logintoFacebook():
ivFacebookShare.setOnClickListener(new OnClickListener() {
public void onClick(View v){
AndroidFacebookConnectActivity.loginToFacebook();
}
});
在我的 AndroidFacebookConnectActivity 类中:
public static void loginToFacebook() {
mPrefs = getPreferences(MODE_PRIVATE);
String access_token = mPrefs.getString("access_token", null);
long expires = mPrefs.getLong("access_expires", 0);
if (access_token != null) {
facebook.setAccessToken(access_token);
}
if (expires != 0) {
facebook.setAccessExpires(expires);
}
if (!facebook.isSessionValid()) {
facebook.authorize(this, new String[] { "email", "publish_stream" }, new DialogListener() {
public void onCancel() {
}
public void onComplete(Bundle values) {
// Function to handle complete event
// Edit Preferences and update facebook acess_token
SharedPreferences.Editor editor = mPrefs.edit();
editor.putString("access_token", facebook.getAccessToken());
editor.putLong("access_expires", facebook.getAccessExpires());
editor.commit();
}
public void onError(DialogError error) {
}
public void onFacebookError(FacebookError fberror) {
}
});
}
}
但是,我在getPreferences 收到错误消息:无法从 Activity 类型对非静态方法 getPreferences(int) 进行静态引用
和facebook.authorize(this,:不能在静态上下文中使用它
有什么想法吗?提前致谢。
【问题讨论】:
-
将上下文传递给静态方法
-
在将上下文传递给静态方法后,我会收到此错误消息:方法 getPreferences(int) 未为上下文类型定义