java - Login With Facebook Android App -


i trying implement login facebook on android app. using following tutorial http://code.tutsplus.com/tutorials/quick-tip-add-facebook-login-to-your-android-app--cms-23837. have no errors in code when try access activity login facebook button located run time error. cannot load activity.

logcat

04-06 14:57:05.024 8470-8470/com.example.martin.ivebeenthere e/androidruntime: fatal exception: main                                                                                java.lang.exceptionininitializererror                                                                                    @ 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.parseinclude(layoutinflater.java:830)                                                                                    @ android.view.layoutinflater.rinflate(layoutinflater.java:736)                                                                                    @ android.view.layoutinflater.inflate(layoutinflater.java:489)                                                                                    @ android.view.layoutinflater.inflate(layoutinflater.java:396)                                                                                    @ android.view.layoutinflater.inflate(layoutinflater.java:352)                                                                                    @ android.support.v7.app.appcompatdelegateimplv7.setcontentview(appcompatdelegateimplv7.java:256)                                                                                    @ android.support.v7.app.appcompatactivity.setcontentview(appcompatactivity.java:109)                                                                                    @ com.example.martin.ivebeenthere.login.oncreate(login.java:34)                                                                                    @ android.app.activity.performcreate(activity.java:5047)                                                                                    @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1094)                                                                                    @ android.app.activitythread.performlaunchactivity(activitythread.java:2056)                                                                                    @ android.app.activitythread.handlelaunchactivity(activitythread.java:2117)                                                                                    @ android.app.activitythread.access$700(activitythread.java:134)                                                                                    @ android.app.activitythread$h.handlemessage(activitythread.java:1218)                                                                                    @ android.os.handler.dispatchmessage(handler.java:99)                                                                                    @ android.os.looper.loop(looper.java:137)                                                                                    @ android.app.activitythread.main(activitythread.java:4867)                                                                                    @ java.lang.reflect.method.invokenative(native method)                                                                                    @ java.lang.reflect.method.invoke(method.java:511)                                                                                    @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:1007)                                                                                    @ com.android.internal.os.zygoteinit.main(zygoteinit.java:774)                                                                                    @ dalvik.system.nativestart.main(native method)                                                                                 caused by: null                                                                                    @ com.facebook.internal.validate.sdkinitialized(validate.java:99)                                                                                    @ com.facebook.facebooksdk.getcallbackrequestcodeoffset(facebooksdk.java:735)                                                                                    @ com.facebook.internal.callbackmanagerimpl$requestcodeoffset.torequestcode(callbackmanagerimpl.java:109)                                                                                    @ com.facebook.login.widget.loginbutton.<clinit>(loginbutton.java:58)                                                                                    @ 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.parseinclude(layoutinflater.java:830)                                                                                     @ android.view.layoutinflater.rinflate(layoutinflater.java:736)                                                                                     @ android.view.layoutinflater.inflate(layoutinflater.java:489)                                                                                     @ android.view.layoutinflater.inflate(layoutinflater.java:396)                                                                                     @ android.view.layoutinflater.inflate(layoutinflater.java:352)                                                                                     @ android.support.v7.app.appcompatdelegateimplv7.setcontentview(appcompatdelegateimplv7.java:256)                                                                                     @ android.support.v7.app.appcompatactivity.setcontentview(appcompatactivity.java:109)                                                                                     @ com.example.martin.ivebeenthere.login.oncreate(login.java:34)                                                                                     @ android.app.activity.performcreate(activity.java:5047)                                                                                     @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1094)                                                                                     @ android.app.activitythread.performlaunchactivity(activitythread.java:2056)                                                                                     @ android.app.activitythread.handlelaunchactivity(activitythread.java:2117)                                                                                     @ android.app.activitythread.access$700(activitythread.java:134)                                                                                     @ android.app.activitythread$h.handlemessage(activitythread.java:1218)                                                                                     @ android.os.handler.dispatchmessage(handler.java:99)                                                                                     @ android.os.looper.loop(looper.java:137)                                                                                     @ android.app.activitythread.main(activitythread.java:4867)                                                                                     @ java.lang.reflect.method.invokenative(native method)                                                                                     @ java.lang.reflect.method.invoke(method.java:511)                                                                                     @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:1007)                                                                                     @ com.android.internal.os.zygoteinit.main(zygoteinit.java:774)                                                                                     @ dalvik.system.nativestart.main(native method)  

login.java

package com.example.martin.ivebeenthere;  import android.content.intent; import android.os.bundle; import android.support.design.widget.floatingactionbutton; import android.support.design.widget.snackbar; import android.support.v7.app.appcompatactivity; import android.support.v7.widget.toolbar; import android.view.view; import android.widget.textview;  import com.facebook.callbackmanager; import com.facebook.facebookcallback; import com.facebook.facebookexception; import com.facebook.facebooksdk; import com.facebook.login.loginresult; import com.facebook.login.widget.loginbutton; import com.microsoft.windowsazure.mobileservices.mobileserviceclient; import com.microsoft.windowsazure.mobileservices.http.servicefilterresponse; import com.microsoft.windowsazure.mobileservices.table.tableoperationcallback;  import java.net.malformedurlexception;  public class login extends appcompatactivity {      private textview info;     private loginbutton loginbutton;      private callbackmanager callbackmanager;      @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_login);         toolbar toolbar = (toolbar) findviewbyid(r.id.toolbar);         setsupportactionbar(toolbar);          facebooksdk.sdkinitialize(getapplicationcontext());         callbackmanager = callbackmanager.factory.create();          setcontentview(r.layout.activity_login);         info = (textview)findviewbyid(r.id.info);         loginbutton = (loginbutton)findviewbyid(r.id.login_button);          loginbutton.registercallback(callbackmanager, new facebookcallback<loginresult>() {             @override             public void onsuccess(loginresult loginresult) {                 info.settext(                         "user id: "                                 + loginresult.getaccesstoken().getuserid()                                 + "\n" +                                 "auth token: "                                 + loginresult.getaccesstoken().gettoken()                 );             }              @override             public void oncancel() {                 info.settext("login attempt canceled.");             }              @override             public void onerror(facebookexception e) {                 info.settext("login attempt failed.");             }         });     }      public void onclickbtnfeed(view view)     {         startactivity(new intent(login.this, feed.class));     }      @override     protected void onactivityresult(int requestcode, int resultcode, intent data) {         callbackmanager.onactivityresult(requestcode, resultcode, data);     }  } 

androidmanifest.xml

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"     package="com.example.martin.ivebeenthere">      <!--          access_coarse/fine_location permissions not required use          google maps android api v2, must specify either coarse or fine          location permissions 'mylocation' functionality.      -->     <uses-permission android:name="android.permission.access_fine_location" />     <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">         <activity             android:name=".home"             android:label="@string/app_name"             android:theme="@style/apptheme.noactionbar">             <intent-filter>                 <action android:name="com.example.splash.clearscreen" />                  <category android:name="android.intent.category.default" />                 <category android:name="android.intent.category.launcher" />             </intent-filter>         </activity>         <activity             android:name=".login"             android:label="@string/title_activity_login"             android:theme="@style/apptheme.noactionbar" />         <activity             android:name=".register"             android:label="@string/title_activity_register"             android:theme="@style/apptheme.noactionbar" />         <!--              api key google maps-based apis defined string resource.              (see file "res/values/google_maps_api.xml").              note api key linked encryption key used sign apk.              need different api key each encryption key, including release key used              sign apk publishing.              can define keys debug , release targets in src/debug/ , src/release/.          -->         <meta-data             android:name="com.google.android.geo.api_key"             android:value="@string/google_maps_key" />          <meta-data android:name="com.facebook.sdk.applicationid"             android:value="@string/facebook_app_id"/>          <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" />          <activity             android:name=".map"             android:label="@string/title_activity_map" />         <activity android:name=".splash">             <intent-filter>                 <action android:name="android.intent.action.main" />                  <category android:name="android.intent.category.launcher" />             </intent-filter>         </activity>         <activity             android:name=".feed"             android:label="@string/title_activity_feed"             android:theme="@style/apptheme.noactionbar" />         <activity             android:name=".checkininfo"             android:label="@string/title_activity_checkin_info"             android:theme="@style/apptheme.noactionbar" />         <activity             android:name=".account"             android:label="@string/title_activity_account"             android:theme="@style/apptheme.noactionbar" />         <activity             android:name=".editaccount"             android:label="@string/title_activity_edit_account"             android:theme="@style/apptheme.noactionbar" />         <activity             android:name=".checkin"             android:label="@string/title_activity_checkin"             android:theme="@style/apptheme.noactionbar" />     </application>  </manifest> 

activity_login.xml

<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.coordinatorlayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:app="http://schemas.android.com/apk/res-auto"     xmlns:tools="http://schemas.android.com/tools"     android:layout_width="match_parent"     android:layout_height="match_parent"     android:fitssystemwindows="true"     tools:context="com.example.martin.ivebeenthere.login">      <android.support.design.widget.appbarlayout         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:theme="@style/apptheme.appbaroverlay">          <android.support.v7.widget.toolbar             android:id="@+id/toolbar"             android:layout_width="match_parent"             android:layout_height="?attr/actionbarsize"             android:background="?attr/colorprimary"             app:popuptheme="@style/apptheme.popupoverlay" />      </android.support.design.widget.appbarlayout>      <include layout="@layout/content_login" />  </android.support.design.widget.coordinatorlayout> 

content_login.xml

<?xml version="1.0" encoding="utf-8"?> <relativelayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:app="http://schemas.android.com/apk/res-auto"     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"     app:layout_behavior="@string/appbar_scrolling_view_behavior"     tools:context="com.example.martin.ivebeenthere.login"     tools:showin="@layout/activity_login">      <imageview         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:id="@+id/imageview"         android:src="@drawable/logo"         android:layout_alignparentbottom="true"         android:layout_alignparentleft="true"         android:layout_alignparentstart="true"         android:layout_marginbottom="276dp" />      <edittext         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:inputtype="textpersonname"         android:ems="10"         android:hint="username"         android:id="@+id/edittext"         android:layout_centervertical="true"         android:layout_centerhorizontal="true" />      <edittext         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:inputtype="textpassword"         android:ems="10"         android:hint="password"         android:id="@+id/edittext2"         android:layout_below="@+id/edittext"         android:layout_centerhorizontal="true" />      <button         android:layout_width="200dp"         android:layout_height="wrap_content"         android:text="login"         android:id="@+id/button3"         android:layout_below="@+id/edittext2"         android:layout_centerhorizontal="true"         android:onclick="onclickbtnfeed"/>      <!--<button         android:layout_width="200dp"         android:layout_height="wrap_content"         android:text="login facebook"         android:id="@+id/button4"         android:background="#3b5998"         android:textcolor="#ffffff"         android:layout_below="@+id/button3"         android:layout_alignleft="@+id/button3"         android:layout_alignstart="@+id/button3"         android:layout_margintop="25dp" />-->      <com.facebook.login.widget.loginbutton         android:id="@+id/login_button"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:layout_centerinparent="true"         />      <textview         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:id="@+id/info"         android:layout_alignparentleft="true"         android:layout_alignparenttop="true"         android:textsize="18sp"         />  </relativelayout> 

update below code.

activity_login.xml

<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools"     xmlns:facebook="http://schemas.android.com/apk/res-auto"     android:layout_width="match_parent"     android:layout_height="match_parent"     android:orientation="vertical">       <com.facebook.widget.loginbutton         android:id="@+id/fb_login_button"         android:layout_width="fill_parent"         android:layout_height="wrap_content"         android:layout_margintop="5dp"         facebook:confirm_logout="false"         facebook:fetch_user_info="true" />      <textview         android:id="@+id/username"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:layout_gravity="center"         android:layout_margin="10dp"         android:textsize="16sp" />  </linearlayout> 

login.java

import java.util.arrays;  import android.content.intent; import android.os.bundle; import android.support.v4.app.fragmentactivity; import android.util.log; import android.widget.textview;  import com.facebook.session; import com.facebook.sessionstate; import com.facebook.uilifecyclehelper; import com.facebook.model.graphuser; import com.facebook.widget.loginbutton; import com.facebook.widget.loginbutton.userinfochangedcallback;  public class login extends fragmentactivity {      private loginbutton loginbtn;     private textview username;     private uilifecyclehelper uihelper;      @override     public void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);          uihelper = new uilifecyclehelper(this, statuscallback);         uihelper.oncreate(savedinstancestate);          setcontentview(r.layout.activity_login);          username = (textview) findviewbyid(r.id.username);         loginbtn = (loginbutton) findviewbyid(r.id.fb_login_button);         loginbtn.setreadpermissions(arrays.aslist("email"));         loginbtn.setuserinfochangedcallback(new userinfochangedcallback() {             @override             public void onuserinfofetched(graphuser user) {                 if (user != null) {                     username.settext("you logged in " + user.getname());                 } else {                     username.settext("you not logged in.");                 }             }         });     }      private session.statuscallback statuscallback = new session.statuscallback() {         @override         public void call(session session, sessionstate state,                 exception exception) {             if (state.isopened()) {                 log.d("login", "facebook session opened.");             } else if (state.isclosed()) {                 log.d("login", "facebook session closed.");             }         }     };      @override     public void onresume() {         super.onresume();         uihelper.onresume();     }      @override     public void onpause() {         super.onpause();         uihelper.onpause();     }      @override     public void ondestroy() {         super.ondestroy();         uihelper.ondestroy();     }      @override     public void onactivityresult(int requestcode, int resultcode, intent data) {         super.onactivityresult(requestcode, resultcode, data);         uihelper.onactivityresult(requestcode, resultcode, data);     }      @override     public void onsaveinstancestate(bundle savedstate) {         super.onsaveinstancestate(savedstate);         uihelper.onsaveinstancestate(savedstate);     } } 

androidmanifest.xml

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"     package="com.example.martin.ivebeenthere"     android:versioncode="1"     android:versionname="1.0" >      <uses-sdk         android:minsdkversion="8"         android:targetsdkversion="19" />     <uses-permission android:name="android.permission.internet"/>      <application         android:allowbackup="true"         android:icon="@drawable/ic_launcher"         android:label="@string/app_name"         android:theme="@style/apptheme" >         <activity             android:name=".login"             android:label="@string/app_name" >             <intent-filter>                 <action android:name="android.intent.action.main" />                  <category android:name="android.intent.category.launcher" />             </intent-filter>         </activity>          <activity android:name="com.facebook.loginactivity"             android:theme="@android:style/theme.translucent.notitlebar" />         <meta-data android:name="com.facebook.sdk.applicationid"             android:value="@string/app_id" />     </application>  </manifest> 

Comments