android - Issues creating login button using Facebook SDK 4.1.2 -


i trying create application, allow users sign in via facebook accounts. wanted use new facebook sdk 4.1.2 via eclipse. use new sdk in eclipse, followed this tutorial. able remove errors facebook sdk without in eclipse. then, started following these steps in order integrate fb in sample application using new sdk.

i have proceeded like:

the mainactivity:

import android.os.bundle; import android.support.v4.app.fragmentactivity;  import com.facebook.callbackmanager; import com.facebook.facebooksdk;  public class mainactivity extends fragmentactivity {       @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_main);          facebooksdk.sdkinitialize(getapplicationcontext());         if (savedinstancestate == null) {             getfragmentmanager()                     .begintransaction()                     .add(r.id.fragmentparentviewgroup, new facebookfragment())                     .commit();         }     }     } 

activity_main.xml:

<framelayout xmlns:android="http://schemas.android.com/apk/res/android"              xmlns:tools="http://schemas.android.com/tools"              android:id="@+id/fragmentparentviewgroup"              android:layout_width="match_parent"              android:layout_height="match_parent"              tools:context=".myactivity"              tools:ignore="mergerootframe" /> 

the facebookfragment:

import android.app.fragment; import android.os.bundle; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup;  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;  public class facebookfragment extends fragment{     callbackmanager callbackmanager;     @override     public view oncreateview(layoutinflater inflater, viewgroup parentviewgroup,                              bundle savedinstancestate) {          view rootview = inflater.inflate(r.layout.facebook_fragment, parentviewgroup, false);         facebooksdk.sdkinitialize(getactivity());         callbackmanager = callbackmanager.factory.create();         loginbutton loginbutton = (loginbutton) rootview.findviewbyid(r.id.login_button);         loginbutton.setreadpermissions("user_friends");         // if using in fragment        // loginbutton.setfragment(this);          // callback registration         loginbutton.registercallback(callbackmanager, new facebookcallback<loginresult>() {             @override             public void onsuccess(loginresult loginresult) {                 // app code             }              @override             public void oncancel() {                 // app code             }              @override             public void onerror(facebookexception exception) {                 // app code             }         });             return rootview;     } } 

the facebook_fragment.xml:

<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_width="match_parent"     android:layout_height="match_parent"     android:orientation="vertical"      >      <relativelayout         android:layout_width="match_parent"         android:layout_height="match_parent"          android:background="#ffffff">         <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_margintop="30dp"     android:layout_marginbottom="30dp" />         </relativelayout> 

the manifest:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"     package="com.facbooksdk4test"     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="com.facbooksdk4test.mainactivity"             android:label="@string/app_name"             android:theme="@android:style/theme.translucent.notitlebar" >             <intent-filter>                 <action android:name="android.intent.action.main" />                  <category android:name="android.intent.category.launcher" />             </intent-filter>         </activity>          <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:label="@string/app_name"             android:theme="@android:style/theme.translucent.notitlebar" />     </application>  </manifest> 

after doing above still getting initialization errors. logcat report:

06-01 15:23:41.670: e/androidruntime(23571): fatal exception: main 06-01 15:23:41.670: e/androidruntime(23571): java.lang.runtimeexception: unable start activity componentinfo{com.facbooksdk4test/com.facbooksdk4test.mainactivity}: android.view.inflateexception: binary xml file line #13: error inflating class com.facebook.login.widget.loginbutton 06-01 15:23:41.670: e/androidruntime(23571):    @ android.app.activitythread.performlaunchactivity(activitythread.java:2252) 06-01 15:23:41.670: e/androidruntime(23571):    @ android.app.activitythread.handlelaunchactivity(activitythread.java:2306) 06-01 15:23:41.670: e/androidruntime(23571):    @ android.app.activitythread.access$700(activitythread.java:153) 06-01 15:23:41.670: e/androidruntime(23571):    @ android.app.activitythread$h.handlemessage(activitythread.java:1286) 06-01 15:23:41.670: e/androidruntime(23571):    @ android.os.handler.dispatchmessage(handler.java:99) 06-01 15:23:41.670: e/androidruntime(23571):    @ android.os.looper.loop(looper.java:176) 06-01 15:23:41.670: e/androidruntime(23571):    @ android.app.activitythread.main(activitythread.java:5302) 06-01 15:23:41.670: e/androidruntime(23571):    @ java.lang.reflect.method.invokenative(native method) 06-01 15:23:41.670: e/androidruntime(23571):    @ java.lang.reflect.method.invoke(method.java:511) 06-01 15:23:41.670: e/androidruntime(23571):    @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:1102) 06-01 15:23:41.670: e/androidruntime(23571):    @ com.android.internal.os.zygoteinit.main(zygoteinit.java:869) 06-01 15:23:41.670: e/androidruntime(23571):    @ dalvik.system.nativestart.main(native method) 06-01 15:23:41.670: e/androidruntime(23571): caused by: android.view.inflateexception: binary xml file line #13: error inflating class com.facebook.login.widget.loginbutton 06-01 15:23:41.670: e/androidruntime(23571):    @ android.view.layoutinflater.createview(layoutinflater.java:619) 06-01 15:23:41.670: e/androidruntime(23571):    @ android.view.layoutinflater.createviewfromtag(layoutinflater.java:693) 06-01 15:23:41.670: e/androidruntime(23571):    @ android.view.layoutinflater.rinflate(layoutinflater.java:752) 06-01 15:23:41.670: e/androidruntime(23571):    @ android.view.layoutinflater.rinflate(layoutinflater.java:760) 06-01 15:23:41.670: e/androidruntime(23571):    @ android.view.layoutinflater.inflate(layoutinflater.java:495) 06-01 15:23:41.670: e/androidruntime(23571):    @ android.view.layoutinflater.inflate(layoutinflater.java:397) 06-01 15:23:41.670: e/androidruntime(23571):    @ com.facbooksdk4test.facebookfragment.oncreateview(facebookfragment.java:22) 06-01 15:23:41.670: e/androidruntime(23571):    @ android.app.fragment.performcreateview(fragment.java:1699) 06-01 15:23:41.670: e/androidruntime(23571):    @ android.app.fragmentmanagerimpl.movetostate(fragmentmanager.java:903) 06-01 15:23:41.670: e/androidruntime(23571):    @ android.app.fragmentmanagerimpl.movetostate(fragmentmanager.java:1075) 06-01 15:23:41.670: e/androidruntime(23571):    @ android.app.backstackrecord.run(backstackrecord.java:682) 06-01 15:23:41.670: e/androidruntime(23571):    @ android.app.fragmentmanagerimpl.execpendingactions(fragmentmanager.java:1455) 06-01 15:23:41.670: e/androidruntime(23571):    @ android.app.activity.performstart(activity.java:5335) 06-01 15:23:41.670: e/androidruntime(23571):    @ android.app.activitythread.performlaunchactivity(activitythread.java:2224) 06-01 15:23:41.670: e/androidruntime(23571):    ... 11 more 06-01 15:23:41.670: e/androidruntime(23571): caused by: java.lang.reflect.invocationtargetexception 06-01 15:23:41.670: e/androidruntime(23571):    @ java.lang.reflect.constructor.constructnative(native method) 06-01 15:23:41.670: e/androidruntime(23571):    @ java.lang.reflect.constructor.newinstance(constructor.java:417) 06-01 15:23:41.670: e/androidruntime(23571):    @ android.view.layoutinflater.createview(layoutinflater.java:593) 06-01 15:23:41.670: e/androidruntime(23571):    ... 24 more 06-01 15:23:41.670: e/androidruntime(23571): caused by: java.lang.noclassdeffounderror: com.facebook.r$styleable 06-01 15:23:41.670: e/androidruntime(23571):    @ com.facebook.login.widget.loginbutton.parseloginbuttonattributes(loginbutton.java:607) 06-01 15:23:41.670: e/androidruntime(23571):    @ com.facebook.login.widget.loginbutton.configurebutton(loginbutton.java:571) 06-01 15:23:41.670: e/androidruntime(23571):    @ com.facebook.facebookbuttonbase.<init>(facebookbuttonbase.java:66) 06-01 15:23:41.670: e/androidruntime(23571):    @ com.facebook.login.widget.loginbutton.<init>(loginbutton.java:209) 06-01 15:23:41.670: e/androidruntime(23571):    ... 27 more 

i not sure going wrong, or should done fix issues. please suggest me done fix same.

i don't see in code onactivityresult method. required sdk workflow.

you need add mainactivity:

@override protected void onactivityresult(int requestcode, int resultcode, intent data) {     super.onactivityresult(requestcode, resultcode, data);     callbackmanager.onactivityresult(requestcode, resultcode, data); } 

cause:

every activity , fragment integrate facebooksdk login or share should forward onactivityresult callbackmanager.

you can find in documentation here.


Comments

Popular posts from this blog

angularjs - ADAL JS Angular- WebAPI add a new role claim to the token -

php - CakePHP HttpSockets send array of paramms -

node.js - Using Node without global install -