使用Android Studio和Facebook 4.6.0充电类com.facebook.login.widget.LoginButton [英] Error inflating class com.facebook.login.widget.LoginButton with Android Studio and Facebook 4.6.0

查看:174
本文介绍了使用Android Studio和Facebook 4.6.0充电类com.facebook.login.widget.LoginButton的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的build.gradle我正在导入Facebook:

  compile'c​​om.facebook.android:facebook-android- sdk:4.6.0'

在我的应用程序类中,我正在初始化Facebook SDK:

  FacebookSdk.sdkInitialize(getApplicationContext()); 

在我的AndroidManifest.xml中:

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

< receiver android:name =com.greenrobot.pirates.HelloFacebookBroadcastReceiver/>

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

这与Genymotion一起使用。在我的设备上,我收到一个错误,它不能让课堂膨胀。

  01-01 19:30:02.207 5880- 5880 /? E / dalvikvm:找不到类'com.greenrobot.pirates.Home $ 19 $ 1',从方法com.greenrobot.pirates.Home $ 19.onCurrentProfileChanged 
01-01 19:30:03.604 5880-5880 /? E / AndroidRuntime:FATAL EXCEPTION:main
java.lang.RuntimeException:无法启动活动ComponentInfo {com.greenrobot.pirates / com.greenrobot.pirates.Home}:android.view.InflateException:二进制XML文件行# 17:错误膨胀类com.facebook.login.widget.LoginButton
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2343)
在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java: 2395)
在android.app.ActivityThread.access $ 600(ActivityThread.java:162)
在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1364)
在android。 os.Handler.dispatchMessage(Handler.java:107)
在android.os.Looper.loop(Looper.java:194)
在android.app.ActivityThread.main(ActivityThread.java:5371)
在java.lang.reflect.Method.invokeNative(本机方法)
在java.lang.reflect.Method.invoke(Method.java:525 )
at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:833)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
at dalvik.system.NativeStart.main(Native Method)
导致:android.view.InflateException:二进制XML文件行#17:错误膨胀类com.facebook.login.widget.LoginButton
在android.view.LayoutInflater.createView(LayoutInflater.java:613)
在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687)
在android.view.LayoutInflater.rInflate(LayoutInflater。 java:746)
在android.view.LayoutInflater.inflate(LayoutInflater.java:489)
在android.view.LayoutInflater.inflate(LayoutInflater.java:396)
在android.view .LayoutInflater.inflate(LayoutInflater.java:352)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:281)
在android.app.Activity.setContentView(Activity.java:1881)
在com.greenrobot.pirates.Home.setupCreateNewAccount(Home.java:885)
在com.greenrobot.pirates.Home.checkForUser (Home.java:826)
在com.greenrobot.pirates.Home.onCreate(Home.java:1171)
在android.app.Activity.performCreate(Activity.java:5122)
在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1081)
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2307)
在android.app.ActivityThread.handleLaunchActivity(ActivityThread。 java:2395)
在android.app.ActivityThread.access $ 600(ActivityThread.java:162)
在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1364)
在android.os.Handler.dispatchMessage(Handler.java:107)
在android.os.Loope r.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5371)
java.lang.reflect.Method.invokeNative(Native Method)
在java.lang.reflect.Method.invoke(Method.java:525)
在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:833)
在com。 android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
在dalvik.system.NativeStart.main(本机方法)
导致:java.lang.reflect.InvocationTargetException
java.lang.reflect.Constructor.constructNative(Native Method)
在java.lang.reflect.Constructor.newInstance(Constructor.java:417)
在android.view.LayoutInflater.createView(LayoutInflater。 java:587)
在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687)
在android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
在android.view.LayoutInflater.inflate(LayoutInflater.java:489)
在android.view.LayoutInflater.inflate(LayoutInflater.java :396)
在android.view.LayoutInflater.inflate(LayoutInflater.java:352)
在com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:281)
at android.app.Activity.setContentView(Activity.java:1881)
at com.greenrobot.pirates.Home.setupCreateNewAccount(Home.java:885)
at com.greenrobot.pirates.Home。 checkForUser(Home.java:826)
在com.greenrobot.pirates.Home.onCreate(Home.java:1171)
在android.app.Activity.performCreate(Activity.java:5122)
at android.app.Instrumentation.callActivityOnCreate(Instrum entation.java:1081)
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2307)
在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2395)
在android .app.ActivityThread.access $ 600(ActivityThread.java:162)
在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1364)
在android.os.Handler.dispatchMessage(Handler。 java:107)
在android.os.Looper.loop(Looper.java:194)
在android.app.ActivityThread.main(ActivityThread.java:5371)
在java.lang .reflect.Method.invokeNative(Native Method)
在java.lang.reflect.Method.invoke(Method.java:525)
在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run( ZygoteInit.java:833)
在com.android.in ternal.os.ZygoteInit.main(ZygoteInit.java:600)
at dalvik.system.NativeStart.main(Native Method)
导致:java.lang.NoClassDefFoundError:com.facebook.R $ style
at com.facebook.login.widget.LoginButton.getDefaultStyleResource(LoginButton.java:576)
at com.facebook.FacebookButtonBase。< init>(FacebookButtonBase.java:64)
at (java.lang.reflect)中的
。 Constructor.newInstance(Constructor.java:417)
在android.view.LayoutInflater.createView(LayoutInflater.java:587)
在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
在android.view.LayoutInflater.inflate(LayoutInflater.java:489)
在android.view.LayoutInflater.inflate(LayoutInflater.java:396)
在android.view.LayoutInflater.inflate(LayoutInflater.java :352)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:281)
at android.app.Activity.setContentView(Activity.java:1881)
在com.greenrobot.pirates.Home.setupCreateNewAccount(Home.java:885)
在com.greenrobot.pirates.Home.checkForUser(Home.java:826)
在com.greenrobot.pirates。 Home.onCreate(Home.java:1171)
在android.app.Activity.performCreate(Activity.java:5122)
在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1081)
at android.app.ActivityThread.performLaunchActivity(Ac tivityThread.java:2307)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2395)
at android.app.ActivityThread.access $ 600(ActivityThread.java:162)
at android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1364)
在android.os.Handler.dispatchMessage(Handler.java:107)
在android.os.Looper.loop(Looper。 java:194)
在android.app.ActivityThread.main(ActivityThread.java:5371)
在java.lang.reflect.Method.invokeNative(本机方法)
在java.lang。反映.Method.invoke(Method.java:525)
在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:833)
在com.android.internal.os。 ZygoteInit.main(ZygoteInit.java:600)
at dalvik.system.NativeStar t.main(Native Method)

编辑:



  <?xml version =1.0encoding =utf- 8\" >?; 
< LinearLayout xmlns:android =http://schemas.android.com/apk/res/android
android:layout_width =match_parent
android:layout_height =match_parent
android:orientation =vertical>

< com.facebook.login.widget.LoginButton
xmlns:facebook =http://schemas.android.com/apk/res-auto
android: id =@ + id / login_button
android:layout_width =400dp
android:layout_height =500dp
android:layout_marginBottom =30dp
android:layout_marginTop = 30dp
android:src =@ drawable / login_button/>


< / LinearLayout>


解决方案

原来我已经启用了multidex,在5.x(仿真器)但不是4.x(我的设备)。一旦我添加了multidex支持库,它就开始正常工作。


In my build.gradle I'm importing Facebook:

compile 'com.facebook.android:facebook-android-sdk:4.6.0'

In my Application class I'm initializing the Facebook SDK:

FacebookSdk.sdkInitialize(getApplicationContext());

In my AndroidManifest.xml:

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

    <receiver android:name="com.greenrobot.pirates.HelloFacebookBroadcastReceiver" />

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

This works with Genymotion. On my device I get an error that it can't inflate the class.

01-01 19:30:02.207    5880-5880/? E/dalvikvm﹕ Could not find class 'com.greenrobot.pirates.Home$19$1', referenced from method com.greenrobot.pirates.Home$19.onCurrentProfileChanged
01-01 19:30:03.604    5880-5880/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.greenrobot.pirates/com.greenrobot.pirates.Home}: android.view.InflateException: Binary XML file line #17: Error inflating class com.facebook.login.widget.LoginButton
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2343)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2395)
            at android.app.ActivityThread.access$600(ActivityThread.java:162)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364)
            at android.os.Handler.dispatchMessage(Handler.java:107)
            at android.os.Looper.loop(Looper.java:194)
            at android.app.ActivityThread.main(ActivityThread.java:5371)
            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:833)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: android.view.InflateException: Binary XML file line #17: Error inflating class com.facebook.login.widget.LoginButton
            at android.view.LayoutInflater.createView(LayoutInflater.java:613)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
            at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:281)
            at android.app.Activity.setContentView(Activity.java:1881)
            at com.greenrobot.pirates.Home.setupCreateNewAccount(Home.java:885)
            at com.greenrobot.pirates.Home.checkForUser(Home.java:826)
            at com.greenrobot.pirates.Home.onCreate(Home.java:1171)
            at android.app.Activity.performCreate(Activity.java:5122)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1081)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2307)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2395)
            at android.app.ActivityThread.access$600(ActivityThread.java:162)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364)
            at android.os.Handler.dispatchMessage(Handler.java:107)
            at android.os.Looper.loop(Looper.java:194)
            at android.app.ActivityThread.main(ActivityThread.java:5371)
            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:833)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.reflect.InvocationTargetException
            at java.lang.reflect.Constructor.constructNative(Native Method)
            at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
            at android.view.LayoutInflater.createView(LayoutInflater.java:587)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
            at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:281)
            at android.app.Activity.setContentView(Activity.java:1881)
            at com.greenrobot.pirates.Home.setupCreateNewAccount(Home.java:885)
            at com.greenrobot.pirates.Home.checkForUser(Home.java:826)
            at com.greenrobot.pirates.Home.onCreate(Home.java:1171)
            at android.app.Activity.performCreate(Activity.java:5122)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1081)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2307)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2395)
            at android.app.ActivityThread.access$600(ActivityThread.java:162)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364)
            at android.os.Handler.dispatchMessage(Handler.java:107)
            at android.os.Looper.loop(Looper.java:194)
            at android.app.ActivityThread.main(ActivityThread.java:5371)
            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:833)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.NoClassDefFoundError: com.facebook.R$style
            at com.facebook.login.widget.LoginButton.getDefaultStyleResource(LoginButton.java:576)
            at com.facebook.FacebookButtonBase.<init>(FacebookButtonBase.java:64)
            at com.facebook.login.widget.LoginButton.<init>(LoginButton.java:200)
            at java.lang.reflect.Constructor.constructNative(Native Method)
            at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
            at android.view.LayoutInflater.createView(LayoutInflater.java:587)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
            at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:281)
            at android.app.Activity.setContentView(Activity.java:1881)
            at com.greenrobot.pirates.Home.setupCreateNewAccount(Home.java:885)
            at com.greenrobot.pirates.Home.checkForUser(Home.java:826)
            at com.greenrobot.pirates.Home.onCreate(Home.java:1171)
            at android.app.Activity.performCreate(Activity.java:5122)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1081)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2307)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2395)
            at android.app.ActivityThread.access$600(ActivityThread.java:162)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364)
            at android.os.Handler.dispatchMessage(Handler.java:107)
            at android.os.Looper.loop(Looper.java:194)
            at android.app.ActivityThread.main(ActivityThread.java:5371)
            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:833)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
            at dalvik.system.NativeStart.main(Native Method)

edit:

The xml file with the login button is:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

 <com.facebook.login.widget.LoginButton
     xmlns:facebook="http://schemas.android.com/apk/res-auto"
    android:id="@+id/login_button"
    android:layout_width="400dp"
    android:layout_height="500dp"
    android:layout_marginBottom="30dp"
    android:layout_marginTop="30dp"
    android:src="@drawable/login_button" />


     </LinearLayout>

解决方案

It turns out I had multidex enabled and it was working on 5.x (emulator) but not 4.x (my device). Once I added the multidex support library it started working properly.

这篇关于使用Android Studio和Facebook 4.6.0充电类com.facebook.login.widget.LoginButton的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆