[英]Java refer static reference to non-static method
嘗試在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
處收到錯誤消息:無法從活動類型對非靜態方法getPreferences(int)進行靜態引用
和facebook.authorize(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);
問題是您使用的是getPreferences()
,這是一種非靜態方法,而您在靜態方法中使用該方法則是public static void loginToFacebook()
不允許在靜態方法內部使用任何非靜態方法。 您需要從loginToFacebook()
方法中刪除靜態修飾符。
像這樣嘗試:
public void loginToFacebook() {
mPrefs = getPreferences(MODE_PRIVATE);
// Add your code here.
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.