Facebook ProfilePictureView:尝试调用虚方法' java.lang.String com.facebook.Profile.getId()'在空对象引用

时间:2015-09-06 13:07:09

标签: android facebook facebook-graph-api android-studio

我试图获取Facebook个人资料(我的)的个人资料照片。 这是我的android_manifest:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="fr.djey.***" >
    <!--android:name=".MyApplication"-->
    <uses-permission android:name="android.permission.INTERNET"/>
    <application

        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <meta-data
            android:name="com.facebook.sdk.ApplicationId"
            android:value="@string/app_id"/>
        <activity
            android:name=".MainActivity"
            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.FacebookActivity"
            android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"
            android:label="@string/app_name" />
    </application>

</manifest>

在gradle.build中我有:

compile 'com.facebook.android:facebook-android-sdk:4.1.0'

我的facebook按钮位于一个片段中,我在另一个xml中调用:

<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:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context="fr.djey.***.MainFragment">

    <com.facebook.login.widget.ProfilePictureView
        android:id="@+id/facebook_avatar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/login_button"
        android:layout_centerHorizontal="true" />

    <com.facebook.login.widget.LoginButton
        android:id="@+id/login_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp"
        android:layout_marginBottom="30dp"
        android:layout_centerInParent="true"/>
</RelativeLayout>

我在片段java中提供了我的onSuccess:

private FacebookCallback<LoginResult> mCallback = new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            AccessToken accessToken = loginResult.getAccessToken();
            Profile profile = Profile.getCurrentProfile();
            ProfilePictureView FacebookAvatar = (ProfilePictureView) getView().findViewById(R.id.facebook_avatar);
            FacebookAvatar.setProfileId(profile.getId());

        }

我在facebook上的登录工作完美,但我尝试获取个人资料图片并且它无法正常工作。当我登录Facebook时,我的应用程序停止了,我已经登录了logcat:

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

我发现问题是 FacebookAvatar.setProfileId(profile.getID()); 但我不知道如何做不同的事情。

确定它不适用于片段但在没有

的情况下完美运行

知道为什么它不能使用片段吗?

0 个答案:

没有答案