2016-01-11 2 views
0

Я новичок в андроид и пытается добавить Facebook входа в андроида с помощью facebook SDK, используя Android студии, но я получаю эту ошибку

вот LogCat,
Ошибка Android: невозможно запустить Activity ComponentInfo ..?

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 

Вот 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> 

Вот 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> 

Вот 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); 
    } 
} 
+0

Попробуйте вызвать 'FacebookSdk.sdkInitialize (getApplicationContext());' перед 'setContentView (R.layout.activity_main);'. – CommonsWare

ответ

0

Вы не инициализирован FacebookSDK

согласно Caused by: The SDK has not been initialized, make sure to call FacebookSdk.sdkInitialize() first.

рекомендуемый подход заключается в создании класса приложения и инициализировать SDK там:

public class MyApp extends Application { 

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

     FacebookSdk.sdkInitialize(getApplicationContext()); 

} 

и обновите свой 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>