简体   繁体   中英

Android Error: Unable to start activity ComponentInfo..?

I'm new to android and trying to add Facebook login in android using facebook sdk using Android studio but i'm getting this error

here is the logcat,

01-11 13:38:36.244 5656-5656/com.example.arpit.facebooklogindemo E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.arpit.facebooklogindemo/com.example.arpit.facebooklogindemo.MainActivity}: android.view.InflateException: Binary XML file line #18: Error inflating class com.facebook.login.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 #18: Error inflating class com.facebook.login.widget.LoginButton
   at android.view.LayoutInflater.createView(LayoutInflater.java:620)
   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
   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:256)
   at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:109)
   at com.example.arpit.facebooklogindemo.MainActivity.onCreate(MainActivity.java:26)
   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.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:594)
   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696) 
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:755) 
   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:256) 
   at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:109) 
   at com.example.arpit.facebooklogindemo.MainActivity.onCreate(MainActivity.java:26) 
   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: The SDK has not been initialized, make sure to call FacebookSdk.sdkInitialize() first.
   at com.facebook.internal.Validate.sdkInitialized(Validate.java:136)
   at com.facebook.AccessTokenTracker.<init>(AccessTokenTracker.java:55)
   at com.facebook.login.widget.LoginButton$2.<init>(LoginButton.java:561)
   at com.facebook.login.widget.LoginButton.configureButton(LoginButton.java:561)
   at com.facebook.FacebookButtonBase.<init>(FacebookButtonBase.java:66)
   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:594) 
   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696) 
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:755) 
   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:256) 
   at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:109) 
   at com.example.arpit.facebooklogindemo.MainActivity.onCreate(MainActivity.java:26) 
   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) 
01-11 13:43:37.044 5656-5656/com.example.arpit.facebooklogindemo I/Process: Sending signal. PID: 5656 SIG: 9

Here is AndroidManifest.xml,

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.arpit.facebooklogindemo">

    <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">

         //from http://developers.facebook.com
        <meta-data android:name="com.facebook.sdk.ApplicationId"
            android:value="@string/app_id"/>

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

        //from http://developers.facebook.com
        <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>

Here is activity_main.xml,

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.arpit.facebooklogindemo.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        android:id="@+id/textView2" />

     //from http://developers.facebook.com
    <com.facebook.login.widget.LoginButton
        android:id="@+id/login_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="Large Text"
        android:id="@+id/textView"
        android:layout_above="@+id/login_button"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="90dp" />

</RelativeLayout>

Here is MainActivity.java,

package com.example.arpit.facebooklogindemo;

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

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

public class MainActivity extends AppCompatActivity {

    CallbackManager callbackManager;
    LoginButton loginButton;
    TextView textView;

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

        FacebookSdk.sdkInitialize(getApplicationContext());

        callbackManager = CallbackManager.Factory.create();

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

        loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                Profile profile = Profile.getCurrentProfile();
                if(profile != null){
                    textView = (TextView)findViewById(R.id.textView);
                    textView.setText(profile.getName());
                }
            }

            @Override
            public void onCancel() {

            }

            @Override
            public void onError(FacebookException error) {

            }
        });
    }

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

You have not initialized the FacebookSDK

as per Caused by: The SDK has not been initialized, make sure to call FacebookSdk.sdkInitialize() first.

the recommended approach here is to create an application Class and initialize the SDK there:

public class MyApp extends Application {

    @Override
    public void onCreate() {
        super.onCreate();

        FacebookSdk.sdkInitialize(getApplicationContext());

}

and update your AndroidManifest:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.arpit.facebooklogindemo">

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:name=".MyApp"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

         //from http://developers.facebook.com
        <meta-data android:name="com.facebook.sdk.ApplicationId"
            android:value="@string/app_id"/>

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

        //from http://developers.facebook.com
        <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>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM