Error al inflar la clase com.facebook.widget.LoginButton con Facebook SDK 4.0.1
Sé que esta es una pregunta muy común, btu He leído todas las preguntas de desbordamiento de pila sin encontrar una respuesta.
Estoy intentando integrar el botón del acceso de Facebook usando Facebook SDK 4.0.1 agregado con Gradle, pero consigo el error siguiente.
- Login de Android Facebook "LoginActivity could not be started"
- Botón de inicio personalizado de Facebook en el estudio android
- Facebook Login No Regresar Usuario access_token
- SDK de Android Facebook: el hash de clave no coincide con ningún hash de clave almacenado al cargar Google Play
- La devolución de llamada de Facebook LoginButton no se llama
java.lang.RuntimeException: Unable to start activity ComponentInfo{se.speedle.android/com.bryderi.speedle.android.activity.MainActivity}: android.view.InflateException: Binary XML file line #26: Error inflating class com.facebook.widget.LoginButton at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261) at android.app.ActivityThread.access$600(ActivityThread.java:141) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5103) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:525) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) at dalvik.system.NativeStart.main(Native Method) Caused by: android.view.InflateException: Binary XML file line #26: Error inflating class com.facebook.widget.LoginButton at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:707) at android.view.LayoutInflater.rInflate(LayoutInflater.java:755) at android.view.LayoutInflater.rInflate(LayoutInflater.java:758) 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.ActionBarActivityDelegateBase.setContentView(ActionBarActivityDelegateBase.java:228) at android.support.v7.app.ActionBarActivity.setContentView(ActionBarActivity.java:102) at com.bryderi.speedle.android.activity.MainActivity.onCreate(MainActivity.java:36) at android.app.Activity.performCreate(Activity.java:5133) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261) at android.app.ActivityThread.access$600(ActivityThread.java:141) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5103) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:525) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.ClassNotFoundException: Didn't find class "com.facebook.widget.LoginButton" on path: DexPathList[[zip file "/data/app/se.speedle.android-1.apk"],nativeLibraryDirectories=[/data/app-lib/se.speedle.android-1, /system/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:53) at java.lang.ClassLoader.loadClass(ClassLoader.java:501) at java.lang.ClassLoader.loadClass(ClassLoader.java:461) at android.view.LayoutInflater.createView(LayoutInflater.java:559) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696) at android.view.LayoutInflater.rInflate(LayoutInflater.java:755) at android.view.LayoutInflater.rInflate(LayoutInflater.java:758) 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.ActionBarActivityDelegateBase.setContentView(ActionBarActivityDelegateBase.java:228) at android.support.v7.app.ActionBarActivity.setContentView(ActionBarActivity.java:102) at com.bryderi.speedle.android.activity.MainActivity.onCreate(MainActivity.java:36) at android.app.Activity.performCreate(Activity.java:5133) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261) at android.app.ActivityThread.access$600(ActivityThread.java:141) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5103) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:525)
Puedo ver la clase LoginButton en Android Studio, por lo que tipo de obras
Aquí están mis dependencias de build.gradle
dependencies { aspects 'org.robobinding:robobinding:0.8.9' compile 'org.springframework.android:spring-android-rest-template:2.0.0.M1' compile 'com.android.support:appcompat-v7:21.0.3' compile 'com.android.support:support-v4:21.0.3' compile 'com.android.support:support-v13:21.0.3' compile 'com.android.support:recyclerview-v7:21.0.3' compile 'com.fasterxml.jackson.core:jackson-databind:2.3.2' compile 'com.jakewharton:butterknife:6.1.0' compile 'com.facebook.android:facebook-android-sdk:4.0.1' compile 'me.alexrs:recyclerview-renderers:1.0.3' compile 'com.google.android.gms:play-services:6.5.87' }
Aquí está mi diseño
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:facebook="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_horizontal" android:orientation="vertical" android:padding="20dp" > <com.facebook.widget.LoginButton android:id="@+id/connectWithFbButton" style="@style/com_facebook_loginview_default_style" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:layout_gravity="center_horizontal" android:text=" connect_with_facebook"/> </LinearLayout>
Y las partes relevantes de mi actividad
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); FacebookSdk.sdkInitialize(getApplicationContext()); callbackManager = CallbackManager.Factory.create(); setContentView(R.layout.activity_main); // Set a Toolbar to replace the ActionBar. Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); // Find our drawer view dlDrawer = (FragmentNavigationDrawer) findViewById(R.id.drawer_layout); // Setup drawer view dlDrawer.setupDrawerConfiguration((ListView) findViewById(R.id.lvDrawer), toolbar, R.layout.drawer_nav_item, R.id.flContent); // Add nav items dlDrawer.addNavItem("Home", "First Fragment", ClassifiedsFragment.class); dlDrawer.addNavItem("Favourites", "Favourites", ClassifiedsFragment.class); dlDrawer.addNavItem("My Items", "Items", ClassifiedsFragment.class); dlDrawer.addNavItem("Settings", "Settings", ClassifiedsFragment.class); //dlDrawer.addNavItem("Second", "Second Fragment", SecondFragment.class); //dlDrawer.addNavItem("Third", "Third Fragment", ThirdFragment.class); // Select default if (savedInstanceState == null) { dlDrawer.selectDrawerItem(0); } }
- Android facebook Api Exception
- Cómo obtengo, es el inicio de sesión de usuario o cerrar sesión en facebook sdk 4.0.1
- Facebook SDK 4.0 LoginButton - setReadPermissions no funciona?
- El inicio de sesión de Facebook falla en algunos dispositivos
- Autenticación con Facebook al principio y luego Google provoca un error en Firebase para Android
- La devolución de llamada de inicio de sesión no se activa mediante facebook-android-sdk 4
- Facebook - Android autoriza el error de la aplicación
- Cómo cambiar el idioma de com.facebook.widget.LoginButton en Android
En facebook sdk 4.0.1, la clase LoginButton
no está dentro del paquete com.facebook.widget
. Está dentro del paquete com.facebook.login.widget
. Por lo tanto, su declaración xml debería tener este aspecto:
<com.facebook.login.widget.LoginButton android:id="@+id/connectWithFbButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:layout_gravity="center_horizontal" android:text=" connect_with_facebook" />
Causado por: El SDK no se ha inicializado, asegúrese de llamar a FacebookSdk.sdkInitialize () primero.
Asegúrese de inicializar SDK de Facebook antes de setContentView.
FacebookSdk.sdkInitialize(getApplicationContext()); setContentView(R.layout.activity_main);
Sólo agregue estos métodos de la clase de aplicación de su aplicación:
FacebookSdk.sdkInitialize(getApplicationContext()); AppEventsLogger.activateApp(this);
Befeore: setContentView en onCreate Actividad.
En importación de dependencias:
compile 'com.facebook.android:facebook-android-sdk:[4,5)' or smaller
Disfruta
Hey amigos todo tu código es correcto. Siga las instrucciones a continuación.
Poner FacebookSdk.sdkInitialize (getApplicationContext ()); Antes de setContentView ();
Y ponga la línea siguiente en su disposición del padre del xml
Xmlns: facebook = "http://schemas.android.com/apk/res-auto"
me gusta,
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:facebook="http://schemas.android.com/apk/res-auto" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <com.facebook.login.widget.LoginButton android:id="@+id/login_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:layout_gravity="center_horizontal" android:layout_marginBottom="30dp" android:layout_marginTop="30dp" /> </RelativeLayout>
Asegúrese de que su SDK de Facebook se inicializa antes de setContentView FacebookSdk.sdkInitialize(getApplicationContext()); setContentView(R.layout.activity_main);
FacebookSdk.sdkInitialize(getApplicationContext()); setContentView(R.layout.activity_main);
En Facebook, el paquete está desactualizado. Para las nuevas versiones, 4 y hasta el nuevo paquete para el botón es com.facebook.login.widget.LoginFacebook.
Dependencias:
compile 'com.facebook.android:facebook-android-sdk:4.5.0'
Activity_login.xml:
<com.facebook.login.widget.LoginButton android:id="@+id/connectWithFbButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:layout_gravity="center_horizontal" />
¡Disfrutar!
El SDK no se ha inicializado, asegúrese de llamar a FacebookSdk.sdkInitialize () primero
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); FacebookSdk.sdkInitialize(this.getApplicationContext()); setContentView(R.layout.activity_main1); }
- Nuevo paquete aún no registrado en el sistema. Error en un teléfono real
- VideoView onResume pierde la parte del video almacenada en búfer