使用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
本文介绍了使用Android Studio和Facebook 4.6.0充电类com.facebook.login.widget.LoginButton的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在我的build.gradle我正在导入Facebook:
compile'com.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屋!
查看全文