Android Facebook SDK --空对象引用

Android Facebook SDK --null object reference

如何从 facebook 获取用户的名字、姓氏、出生日期、性别和电子邮件。我的应用程序每次都崩溃。 下面是错误..

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.facebook.Profile.getFirstName()' on a null object reference

--

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);
        FacebookSdk.sdkInitialize(getApplicationContext()); // Facebook SDK initialization
        ButterKnife.bind(this); // Butterknife initialization
    }

    @Override
    public void onResume() {
        Log.v(TAG, "onResume");
        super.onResume();
        currentProfile = Profile.getCurrentProfile();
        updateUserProfile();
    }

    private void updateUserProfile() {
        if(currentProfile.getFirstName() != null) {
            tvFirstName.setText(currentProfile.getFirstName());
        }

        if(currentProfile.getLastName() != null) {
            tvLastName.setText(currentProfile.getLastName());
        }

    }
}

错误表示currentProfile为空。您应该进行空检查,然后根据 Facebook SDK 流程获取当前配置文件。

Profile.getCurrentProfile() 将 return 当前配置文件(如果有),但在用户登录并接受您的应用程序之前不会有,通常不会有在您的应用程序启动之间保留,因此您每次都需要执行身份验证流程。

以防您不知道 onResume 在我们显示 UI 并让用户与之交互之前被调用。此时 facebook 弹出窗口不可能让用户进行交互,一旦出现,您需要确保在尝试使用它们的结果之前完成任何异步交互。这就是所有回调的目的。