簡體   English   中英

Java將靜態引用引用為非靜態方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM