質問

Facebook SDK 3.5を使用してAndroidネイティブアプリを開発しています。

私はFacebookの友達を選ぶことができるAutoCompleteTextViewを持っています。これについては、私は以下のようにnewmyfriendsRequestを使っています。

private void fbFriendsRequest(final Session session) {
    Request request = Request.newMyFriendsRequest(session, new Request.GraphUserListCallback() {
        @Override
        public void onCompleted(List<GraphUser> listFacebookFriends, Response response) {
            // If the response is successful
            if (session == Session.getActiveSession()) {
                if (listFacebookFriends != null) {
                    mAdapter = new GraphUserAdapter(FriendPicker.this, listFacebookFriends);
                    mAutoComplete.setAdapter(mAdapter);
                    Toast.makeText(FriendPicker.this,"Friends Loaded",Toast.LENGTH_SHORT).show();
                }
            }
            if (response.getError() != null) {
                // Handle errors, will do so later.
            }
        }
    });
    request.executeAsync();
}
.

それからユーザーがAutoCompleTetextViewから行を選択するたびに、この行を別のリストに追加し、[OK]ボタンを押すと、

public void onOkClick(View v) {
    if(mGraphUsersList.size()==0) {
        setResult(RESULT_CANCELED,null);    
    } else {
        Intent returnIntent = new Intent();
        Iterator<GraphUser> itr = mGraphUsersList.iterator();
        int n = mGraphUsersList.size();
        String[] idfb = new String[n];
        String[] names = new String[n];
        String[] lastnames = new String[n];
        int i = 0;
        while(itr.hasNext()) {
            GraphUser User = (GraphUser) itr.next();
            idfb[i]=User.getId();
            names[i]=User.getFirstName();    // problem
            lastnames[i]=User.getLastName(); // problem
            i++;
        }
        returnIntent.putExtra("idfb",idfb);
        returnIntent.putExtra("names",names);
        returnIntent.putExtra("lastnames",lastnames);
        setResult(RESULT_OK,returnIntent);     
    }
    finish();
}
.

getfirstname()およびgetlastname()関数を使用すると、null文字列がありますが、getname()関数を使用した場合、名前+ lastNameを返します。NewMyfriendsRequestで与えられたリストにあるものが失われた場合のようなものです。

誰もがこのために回避策を知っていますか?

役に立ちましたか?

解決

idとFriendsのname以外のフィールドを取得するには、要求に明示的に指定する必要があります。

このようなリクエストのBundleに追加します。

Request request = Request.newMyFriendsRequest(session, new Request.GraphUserListCallback() {

    @Override
    public void onCompleted(List<GraphUser> listFacebookFriends, Response response) {
        // your code like you did
    }
}

// here add fields explicitly 
Bundle bundle = request.getParameters();
mBundle.putString("fields", "id,first_name,last_name");

// execute like you did
request.executeAsync();
.

これはあなたのための1つの解決策です、またはもう1つこのスーパーシンプルライブラリを使うことです:Android-Simple-Facebook

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top