适用于android的facebook SDK 3.6,无碎片

适用于android的facebook SDK 3.6,无碎片,android,facebook,facebook-graph-api,android-fragments,Android,Facebook,Facebook Graph Api,Android Fragments,我正试图让facebook进入我的应用程序。因此,我尝试了一个简单的测试应用程序,用户按下登录按钮,就会显示他的姓名和个人资料图片。这是我的密码 public class login extends Activity { private GraphUser user; private LoginButton loginbut; TextView username; ProfilePictureView userpic; private UiLifecycleHelper uihelper;

我正试图让facebook进入我的应用程序。因此,我尝试了一个简单的测试应用程序,用户按下登录按钮,就会显示他的姓名和个人资料图片。这是我的密码

public class login extends Activity {

private GraphUser user;
private LoginButton loginbut;
TextView username;
ProfilePictureView userpic;

private UiLifecycleHelper uihelper;
private Session.StatusCallback callback = new Session.StatusCallback() {

    @Override
    public void call(Session session, SessionState state, Exception exception) {
        // TODO Auto-generated method stub
        onsessionstatechange(session, state, exception);
    }
};

private void setuploginandprofilepic()
{
    loginbut = (LoginButton) findViewById(R.id.login_button);
    loginbut.setUserInfoChangedCallback(new LoginButton.UserInfoChangedCallback() {

        @Override
        public void onUserInfoFetched(GraphUser user) {
            // TODO Auto-generated method stub
            login.this.user = user;
            updateprofile();
        }
    });
}


private void updateprofile() {
    // T

ODO Auto-generated method stub
        TextView username = (TextView) findViewById(R.id.username);
        ProfilePictureView userpic = (ProfilePictureView) findViewById(R.id.userpic);
        userpic.setCropped(true);

        Session session = Session.getActiveSession();
        boolean validsession = session!=null && session.isOpened();

        if(validsession && user != null)
        {
            makemerequest(session);
        }else
        {
            userpic.setProfileId(null);
            username.setText("Not There");
        }
    }



        private void makemerequest(Session session){
            Request request = Request.newMeRequest(session, new Request.GraphUserCallback() {



            @Override
            public void onCompleted(GraphUser user, Response response) {
                // TODO Auto-generated method stub
                userpic.setProfileId(user.getId());
                username.setText(user.getFirstName());
            }
        });
        request.executeAsync();
    }

    private void onsessionstatechange(Session session, SessionState state, Exception exception)
    {
        if(session.isOpened())
        {
            Toast.makeText(this, "OPEN", Toast.LENGTH_SHORT).show();
        }
        else if(session.isClosed())
        {
            Toast.makeText(this, "CLOSED", Toast.LENGTH_SHORT).show();
        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        uihelper = new UiLifecycleHelper(this, callback);
        uihelper.onCreate(savedInstanceState);
        setuploginandprofilepic();
        setContentView(R.layout.testlayout);
//      ProfilePictureView pp = (ProfilePictureView) findViewById(R.id.selection_profile_pic);
//      TextView tv = (TextView) findViewById(R.id.selection_user_name);
//      Session session = new Session(getApplicationContext());
//      Session.setActiveSession(session);
    }
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
    uihelper.onActivityResult(requestCode, resultCode, data);
}

@Override
protected void onDestroy() {
    // TODO Auto-generated method stub
    super.onDestroy();
    uihelper.onDestroy();
}

@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
    uihelper.onPause();
}

@Override
protected void onResume() {
    // TODO Auto-generated method stub
    super.onResume();
    uihelper.onResume();
}

@Override
protected void onSaveInstanceState(Bundle outState) {
    // TODO Auto-generated method stub
    super.onSaveInstanceState(outState);
    uihelper.onSaveInstanceState(outState);
}


}
这是我的日志:

    01-09 18:03:56.800: I/dalvikvm(8234): Could not find method android.support.v4.content.LocalBroadcastManager.getInstance, referenced from method com.facebook.UiLifecycleHelper.<init>
01-09 18:03:56.800: W/dalvikvm(8234): VFY: unable to resolve static method 222: Landroid/support/v4/content/LocalBroadcastManager;.getInstance (Landroid/content/Context;)Landroid/support/v4/content/LocalBroadcastManager;
01-09 18:03:56.800: D/dalvikvm(8234): VFY: replacing opcode 0x71 at 0x0019
01-09 18:03:56.820: I/dalvikvm(8234): Could not find method android.support.v4.content.LocalBroadcastManager.unregisterReceiver, referenced from method com.facebook.UiLifecycleHelper.onPause
01-09 18:03:56.820: W/dalvikvm(8234): VFY: unable to resolve virtual method 225: Landroid/support/v4/content/LocalBroadcastManager;.unregisterReceiver (Landroid/content/BroadcastReceiver;)V
01-09 18:03:56.820: D/dalvikvm(8234): VFY: replacing opcode 0x6e at 0x0004
01-09 18:03:56.830: I/dalvikvm(8234): Could not find method android.support.v4.content.LocalBroadcastManager.registerReceiver, referenced from method com.facebook.UiLifecycleHelper.onResume
01-09 18:03:56.830: W/dalvikvm(8234): VFY: unable to resolve virtual method 223: Landroid/support/v4/content/LocalBroadcastManager;.registerReceiver (Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)V
01-09 18:03:56.830: D/dalvikvm(8234): VFY: replacing opcode 0x6e at 0x0032
01-09 18:03:56.840: D/AndroidRuntime(8234): Shutting down VM
01-09 18:03:56.840: W/dalvikvm(8234): threadid=1: thread exiting with uncaught exception (group=0x40a95228)
01-09 18:03:56.840: E/AndroidRuntime(8234): FATAL EXCEPTION: main
01-09 18:03:56.840: E/AndroidRuntime(8234): java.lang.NoClassDefFoundError: android.support.v4.content.LocalBroadcastManager
01-09 18:03:56.840: E/AndroidRuntime(8234):     at com.facebook.UiLifecycleHelper.<init>(UiLifecycleHelper.java:72)
01-09 18:03:56.840: E/AndroidRuntime(8234):     at com.droidlearnx.hwtofb.login.onCreate(login.java:85)
01-09 18:03:56.840: E/AndroidRuntime(8234):     at android.app.Activity.performCreate(Activity.java:4538)
01-09 18:03:56.840: E/AndroidRuntime(8234):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1071)
01-09 18:03:56.840: E/AndroidRuntime(8234):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2161)
01-09 18:03:56.840: E/AndroidRuntime(8234):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2240)
01-09 18:03:56.840: E/AndroidRuntime(8234):     at android.app.ActivityThread.access$600(ActivityThread.java:139)
01-09 18:03:56.840: E/AndroidRuntime(8234):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1262)
01-09 18:03:56.840: E/AndroidRuntime(8234):     at android.os.Handler.dispatchMessage(Handler.java:99)
01-09 18:03:56.840: E/AndroidRuntime(8234):     at android.os.Looper.loop(Looper.java:156)
01-09 18:03:56.840: E/AndroidRuntime(8234):     at android.app.ActivityThread.main(ActivityThread.java:4987)
01-09 18:03:56.840: E/AndroidRuntime(8234):     at java.lang.reflect.Method.invokeNative(Native Method)
01-09 18:03:56.840: E/AndroidRuntime(8234):     at java.lang.reflect.Method.invoke(Method.java:511)
01-09 18:03:56.840: E/AndroidRuntime(8234):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
01-09 18:03:56.840: E/AndroidRuntime(8234):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
01-09 18:03:56.840: E/AndroidRuntime(8234):     at dalvik.system.NativeStart.main(Native Method)
01-09 18:03:58.261: D/Process(8234): killProcess, pid=8234
01-09 18:03:58.271: D/Process(8234): dalvik.system.VMStack.getThreadStackTrace(Native Method)
01-09 18:03:58.271: D/Process(8234): java.lang.Thread.getStackTrace(Thread.java:599)
01-09 18:03:58.271: D/Process(8234): android.os.Process.killProcess(Process.java:807)
01-09 18:03:58.271: D/Process(8234): com.android.internal.os.RuntimeInit$UncaughtHandler.uncaughtException(RuntimeInit.java:104)
01-09 18:03:58.281: D/Process(8234): java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693)
01-09 18:03:58.281: D/Process(8234): java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690)
01-09 18:03:58.291: D/Process(8234): dalvik.system.NativeStart.main(Native Method)
01-09 18:03:58.291:

 I/Process(8234): Sending signal. PID: 8234 SIG: 9
我已经尝试了我能做的一切,而且我似乎能克服它。我是facebook sdk的新手,这是我第一次使用它。我试图做到这一点而不使用片段,因为它是在facebook开发者页面上。我需要为此学习片段吗?或者我可以通过活动来解决问题吗


感谢您的帮助。

步骤1:添加Android私有库项目属性->Java构建路径->订单和导出

步骤2:清理项目并再次运行


它将解决问题。

在updateProfile方法中。。//T ODO自动生成的方法存根是这里的错误还是您的代码中的错误?java.lang.NoClassDefFoundError:android.support.v4.content.LocalBroadcastManager是否添加了android support v4library@coderji这真的重要吗,因为它仍然被评论。。还没有working@D_Vaibhav我正在浏览,上面写着要删除lib。虽然我已经试过了,但是没有效果。另请参见。@MayankSharma该教程链接指出,您需要删除当前jar,并将support v4 jar从facebook sdk的libs文件夹复制到您的apps libs文件夹。您需要删除项目libs文件夹下的android-support-v4.jar,并将FacebookSDK项目libs文件中的相同文件放在此处。