簡體   English   中英

沒有片段的Facebook Android SDK登錄按鈕

[英]Facebook android sdk login button without fragments

我正在Android Studio的一個沒有任何片段的項目中工作。 即使在將行分配給它之后,我仍然在loginButton上收到NullPointerException:

            loginButton = (LoginButton) findViewById(R.id.login_button);

MainActivity.java的相關部分:

public class MainActivity extends ActionBarActivity {
    LoginButton loginButton;
    CallbackManager callbackManager;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        FacebookSdk.sdkInitialize(getApplicationContext());
        callbackManager = CallbackManager.Factory.create();
        loginButton = (LoginButton) findViewById(R.id.login_button);
        loginButton.setReadPermissions("user_friends");
        loginButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {

            }
        });
        setContentView(R.layout.activity_main);
        // Callback registration
        loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                // App code
            }
            @Override
            public void onCancel() {
                // App code
            }
            @Override
            public void onError(FacebookException exception) {
                // App code
            }
        });
    }

和activity_main.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="0dp"
    tools:context=".MainActivity">        

    <com.facebook.login.widget.LoginButton
        android:id="@+id/login_button"
        android:layout_centerHorizontal="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginBottom="30dp" />
</RelativeLayout>

我不知道為什么那行之后loginbutton仍然為null,我不確定如何解決此問題。 如果有人可以幫助我建立一個使用Android Studio的Facebook登錄名設置的項目,那即使使用片段也很好。 我對片段一無所知,但是我是Android的新手,所以我決定不使用片段,因為我不完全理解它們。 我瀏覽了Facebook的示例項目,但找不到Android Studio項目文件,並且始終無法使用其單獨的示例文件來設置項目。

在分配loginButton之前,嘗試將setContentView()移動到任何位置。 像這樣:

public class MainActivity extends ActionBarActivity {
    LoginButton loginButton;
    CallbackManager callbackManager;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //right here
        setContentView(R.layout.activity_main);

        FacebookSdk.sdkInitialize(getApplicationContext());
        callbackManager = CallbackManager.Factory.create();
        loginButton = (LoginButton) findViewById(R.id.login_button);
        loginButton.setReadPermissions("user_friends");
        loginButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {

            }
        });
        // Callback registration
        loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            // App code
        }
        @Override
        public void onCancel() {
            // App code
        }
        @Override
        public void onError(FacebookException exception) {
            // App code
        }
    });
}

您還可以在使用Facebook SDK 4.7時使用以下對我有用的代碼

Facebook登錄Android

您的視圖(登錄按鈕)必須在setContentView(R.layout.activity_main);之后初始化setContentView(R.layout.activity_main); 所以你需要移動

callbackManager = CallbackManager.Factory.create();
loginButton = (LoginButton) findViewById(R.id.login_button);
loginButton.setReadPermissions("user_friends");
loginButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {

        }
});

setContentView(R.layout.activity_main);

注意: FB SDK應該在setContentView()之前初始化

這將給出一個空指針錯誤。 因此,您所需要做的就是首先初始化facebookSDK,然后初始化setContentView,然后設置callBackManager。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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