gpt4 book ai didi

Java将静态引用引用为非静态方法

转载 作者:行者123 更新时间:2023-12-02 05:07:49 25 4
gpt4 key购买 nike

我在尝试在 Android Java 中引用静态引用非静态方法时遇到了一些问题。基本上从我的详细类中,当我的按钮单击时,它将在另一个类中执行 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,:无法在静态上下文中使用this

有什么想法吗?提前致谢。

最佳答案

Context 对象传递给您的方法 loginToFacebook() 并使用它来访问 getPreferences()

喜欢

public static void loginToFacebook(Activity activityContext) {
mPrefs = context.getPreferences(MODE_PRIVATE);
// ....... add your code here..
}

你可以在哪里调用这个方法,例如

AndroidFacebookConnectActivity.loginToFacebook(getActivity()); // If calling from fragment

如果从 Activity 调用

AndroidFacebookConnectActivity.loginToFacebook(ActivityName.this);

关于Java将静态引用引用为非静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27614274/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com