Error using Facebook SDK on android

2

I'm trying to login with facebook, this is my code

MainActivity:

             package com.example.em645.loginfacebook;

            import android.content.Intent;
            import android.support.v7.app.AppCompatActivity;
            import android.os.Bundle;
            import android.widget.TextView;

            import com.facebook.CallbackManager;
            import com.facebook.FacebookCallback;
            import com.facebook.FacebookException;
            import com.facebook.FacebookSdk;
            import com.facebook.login.LoginResult;
            import com.facebook.login.widget.LoginButton;

            public class MainActivity extends AppCompatActivity {

                private TextView info;
                private LoginButton loginButton;
                private CallbackManager callbackManager;

                @Override
                protected void onCreate(Bundle savedInstanceState) {
                    super.onCreate(savedInstanceState);
                    setContentView(R.layout.activity_main);

                    FacebookSdk.sdkInitialize(getApplicationContext());
                    callbackManager = CallbackManager.Factory.create();

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

                    loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
                        @Override
                        public void onSuccess(LoginResult loginResult) {

                            info.setText(
                                    "User ID: "
                                            + loginResult.getAccessToken().getUserId()
                                            + "\n" +
                                            "Auth Token: "
                                            + loginResult.getAccessToken().getToken()
                            );

                        }

                        @Override
                        public void onCancel() {

                            info.setText("Login attempt canceled.");

                        }

                        @Override
                        public void onError(FacebookException error) {

                            info.setText("Login attempt failed.");

                        }
                    });

                }

                @Override
                protected void onActivityResult(int requestCode, int resultCode, Intent data) {
                    callbackManager.onActivityResult(requestCode, resultCode, data);
                }



            }

activity_main.xml

                

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/info"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentTop="true"
                    android:textSize="18sp"
                    />

                <com.facebook.login.widget.LoginButton
                    android:id="@+id/login_button"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerInParent="true"
                    />
            </RelativeLayout>

android manifes:

                

                <uses-permission android:name="android.permission.INTERNET"/>

                <application
                    android:allowBackup="true"
                    android:icon="@mipmap/ic_launcher"
                    android:label="@string/app_name"
                    android:supportsRtl="true"
                    android:theme="@style/AppTheme">
                    <activity android:name=".MainActivity">
                        <intent-filter>
                            <action android:name="android.intent.action.MAIN" />

                            <category android:name="android.intent.category.LAUNCHER" />
                        </intent-filter>
                    </activity>

                    <meta-data android:name="com.facebook.sdk.ApplicationId"
                        android:value="@string/facebook_app_id"/>


                    <activity android:name="com.facebook.FacebookActivity"
                        android:configChanges=
                            "keyboard|keyboardHidden|screenLayout|screenSize|orientation"
                        android:theme="@android:style/Theme.Translucent.NoTitleBar"
                        android:label="@string/app_name" />

                </application>

            </manifest>

and the Grandle:

            apply plugin: 'com.android.application'

            android {
                compileSdkVersion 23
                buildToolsVersion "23.0.3"

                defaultConfig {
                    applicationId "com.example.em645.loginfacebook"
                    minSdkVersion 15
                    targetSdkVersion 23
                    versionCode 1
                    versionName "1.0"
                }
                buildTypes {
                    release {
                        minifyEnabled false
                        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
                    }
                }
            }
            repositories {
                mavenCentral()
            }
            dependencies {
                compile fileTree(dir: 'libs', include: ['*.jar'])
                testCompile 'junit:junit:4.12'
                compile 'com.android.support:appcompat-v7:23.4.0'
                compile 'com.facebook.android:facebook-android-sdk:[4,5)'
            }

This gives me the following error:

     06-30 11:44:34.168 4227-4227/com.example.em645.loginfacebook E/AndroidRuntime: FATAL EXCEPTION: main
                                                                           Process: com.example.em645.loginfacebook, PID: 4227
                                                                           java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.em645.loginfacebook/com.example.em645.loginfacebook.MainActivity}: android.view.InflateException: Binary XML file line #21: Error inflating class com.facebook.login.widget.LoginButton
                                                                               at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
                                                                               at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
                                                                               at android.app.ActivityThread.access$800(ActivityThread.java:135)
                                                                               at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
                                                                               at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                               at android.os.Looper.loop(Looper.java:136)
                                                                               at android.app.ActivityThread.main(ActivityThread.java:5017)
                                                                               at java.lang.reflect.Method.invokeNative(Native Method)
                                                                               at java.lang.reflect.Method.invoke(Method.java:515)
                                                                               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
                                                                               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
                                                                               at dalvik.system.NativeStart.main(Native Method)
                                                                            Caused by: android.view.InflateException: Binary XML file line #21: Error inflating class com.facebook.login.widget.LoginButton
                                                                               at android.view.LayoutInflater.createView(LayoutInflater.java:621)
                                                                               at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:697)
                                                                               at android.view.LayoutInflater.rInflate(LayoutInflater.java:756)
                                                                               at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
                                                                               at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
                                                                               at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
                                                                               at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280)
                                                                               at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
                                                                               at com.example.em645.loginfacebook.MainActivity.onCreate(MainActivity.java:24)

Where the error tells me what is happening in my class on the line: setContentView (R.layout.activity_main);

It's the first time I've tried this, if you could help me, I'd be grateful.

    
asked by Eduardo Jesus 30.06.2016 в 17:53
source

1 answer

2

It looks like you're starting things upside down. You currently have:

setContentView(R.layout.activity_main);
FacebookSdk.sdkInitialize(getApplicationContext());

Put it upside down:

FacebookSdk.sdkInitialize(getApplicationContext());
setContentView(R.layout.activity_main);

It is explained in the documentation :)

    
answered by 30.06.2016 / 17:55
source