Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为Android实现Facebook登录按钮时出错_Android_Facebook Login - Fatal编程技术网

为Android实现Facebook登录按钮时出错

为Android实现Facebook登录按钮时出错,android,facebook-login,Android,Facebook Login,我正在尝试为我的下一个Android应用程序实现Facebook登录功能。我已经阅读了Facebook开发网站上的教程。一切似乎都很好。但是,一旦我实现了以下代码: <com.facebook.login.widget.LoginButton android:id="@+id/login_button" android:layout_width="fill_parent" android:layout_height="wrap_content" androi

我正在尝试为我的下一个Android应用程序实现Facebook登录功能。我已经阅读了Facebook开发网站上的教程。一切似乎都很好。但是,一旦我实现了以下代码:

<com.facebook.login.widget.LoginButton
    android:id="@+id/login_button"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:layout_marginTop="15dp"
    android:layout_marginBottom="15dp"
    android:layout_below="@id/tvLoginRegister"/>

编译时,显示以下错误:

java.lang.ExceptionInInitializerError
        at java.lang.reflect.Constructor.newInstance(Native Method)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
        at android.view.LayoutInflater.createView(LayoutInflater.java:607)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
        at android.support.v7.app.ActionBarActivityDelegateBase.setContentView(ActionBarActivityDelegateBase.java:228)
        at android.support.v7.app.ActionBarActivity.setContentView(ActionBarActivity.java:102)
        at com.myapp.myapp.LoginActivity.onCreate(LoginActivity.java:26)
        at android.app.Activity.performCreate(Activity.java:5933)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
        at android.app.ActivityThread.access$800(ActivityThread.java:144)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5221)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
 Caused by: null
        at com.facebook.internal.Validate.sdkInitialized(Validate.java:99)
        at com.facebook.FacebookSdk.getCallbackRequestCodeOffset(FacebookSdk.java:735)
        at com.facebook.internal.CallbackManagerImpl$RequestCodeOffset.toRequestCode(CallbackManagerImpl.java:109)
        at com.facebook.login.widget.LoginButton.<clinit>(LoginButton.java:58)
            at java.lang.reflect.Constructor.newInstance(Native Method)
            at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
            at android.view.LayoutInflater.createView(LayoutInflater.java:607)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
            atandroid.support.v7.app.ActionBarActivityDelegateBase.setContentView(ActionBarActivityDelegateBase.java:228)
            at android.support.v7.app.ActionBarActivity.setContentView(ActionBarActivity.java:102)
            at com.myapp.myapp.LoginActivity.onCreate(LoginActivity.java:26)
            at android.app.Activity.performCreate(Activity.java:5933)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
            at android.app.ActivityThread.access$800(ActivityThread.java:144)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5221)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
java.lang.ExceptionInInitializeError
位于java.lang.reflect.Constructor.newInstance(本机方法)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:288)
位于android.view.LayoutInflater.createView(LayoutInflater.java:607)
位于android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743)
位于android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
在android.view.LayoutInflater.充气(LayoutInflater.java:504)
在android.view.LayoutInflater.inflate(LayoutInflater.java:414)
在android.view.LayoutInflater.充气(LayoutInflater.java:365)
在android.support.v7.app.ActionBarActivityDelegateBase.setContentView(ActionBarActivityDelegateBase.java:228)
位于android.support.v7.app.ActionBarActivity.setContentView(ActionBarActivity.java:102)
在com.myapp.myapp.LoginActivity.onCreate上(LoginActivity.java:26)
位于android.app.Activity.performCreate(Activity.java:5933)
位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)上
在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)上
在android.app.ActivityThread.access$800(ActivityThread.java:144)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
位于android.os.Handler.dispatchMessage(Handler.java:102)
位于android.os.Looper.loop(Looper.java:135)
位于android.app.ActivityThread.main(ActivityThread.java:5221)
位于java.lang.reflect.Method.invoke(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:372)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
原因:空
在com.facebook.internal.Validate.sdkinInitialized上(Validate.java:99)
访问com.facebook.FacebookSdk.getCallbackRequestCodeOffset(FacebookSdk.java:735)
在com.facebook.internal.CallbackManagerImpl$RequestCodeOffset.toRequestCode(CallbackManagerImpl.java:109)上
登录到com.facebook.login.widget.LoginButton。(LoginButton.java:58)
位于java.lang.reflect.Constructor.newInstance(本机方法)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:288)
位于android.view.LayoutInflater.createView(LayoutInflater.java:607)
位于android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743)
位于android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
在android.view.LayoutInflater.充气(LayoutInflater.java:504)
在android.view.LayoutInflater.inflate(LayoutInflater.java:414)
在android.view.LayoutInflater.充气(LayoutInflater.java:365)
atandroid.support.v7.app.ActionBarActivityDelegateBase.setContentView(ActionBarActivityDelegateBase.java:228)
位于android.support.v7.app.ActionBarActivity.setContentView(ActionBarActivity.java:102)
在com.myapp.myapp.LoginActivity.onCreate上(LoginActivity.java:26)
位于android.app.Activity.performCreate(Activity.java:5933)
位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)上
在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)上
在android.app.ActivityThread.access$800(ActivityThread.java:144)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
位于android.os.Handler.dispatchMessage(Handler.java:102)
位于android.os.Looper.loop(Looper.java:135)
位于android.app.ActivityThread.main(ActivityThread.java:5221)
位于java.lang.reflect.Method.invoke(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:372)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
以前有人面对过这个问题吗


提前感谢。

我假设您正在使用facebook sdk 4.0。以下是一些提示: 1) 清单材料: 确保在清单中声明了此活动:

<activity
            android:name="com.facebook.LoginActivity"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />
您是否在活动结果中调用了它?(请记住,如果这是在
片段
中,则必须在Activity
onActivityResult
方法中调用片段实例的
onActivityResult

3) 最后,您是否使用了一些gradle依赖项,如编译com.facebook.android:facebook android sdk:+'?。如果没有,试试看

让我知道这是否对你有帮助。如果没有,我将询问您有关此问题的更多反馈/代码

更新:

在xml布局中,xml父级(
RelativeLayout
LinearLayout
FrameLayout
等)中是否有此属性

xmlns:facebook=”http://schemas.android.com/apk/res-auto“

在我的xml中,我有:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:id="@+id/container_login"
    android:layout_width="match_parent"
    android:focusableInTouchMode="true"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingLeft="@dimen/activity_vertical_margin"
    android:paddingRight="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"

    xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="@color/colorPrimary"
    xmlns:facebook="http://schemas.android.com/apk/res-auto"
    >

    <com.facebook.login.widget.LoginButton
        android:id="@+id/fb_login_button"
        android:layout_width="match_parent"
        android:layout_height="48dp"
        android:layout_below="@+id/btn_login"
        facebook:confirm_logout="false"
        android:textSize="16sp"
        android:layout_marginLeft="2dp"
        android:layout_marginRight="2dp"
        android:layout_marginTop="@dimen/keyline_1" />

</LinearLayout>

我也遇到了您提到的这个错误,不仅是在我自己的应用程序中,而且在使用th
mCallback = CallbackManager.Factory.create();
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:id="@+id/container_login"
    android:layout_width="match_parent"
    android:focusableInTouchMode="true"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingLeft="@dimen/activity_vertical_margin"
    android:paddingRight="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"

    xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="@color/colorPrimary"
    xmlns:facebook="http://schemas.android.com/apk/res-auto"
    >

    <com.facebook.login.widget.LoginButton
        android:id="@+id/fb_login_button"
        android:layout_width="match_parent"
        android:layout_height="48dp"
        android:layout_below="@+id/btn_login"
        facebook:confirm_logout="false"
        android:textSize="16sp"
        android:layout_marginLeft="2dp"
        android:layout_marginRight="2dp"
        android:layout_marginTop="@dimen/keyline_1" />

</LinearLayout>