簡體   English   中英

將好友列表和對象ID從圖形API傳遞到另一個活動

[英]Pass friend list and object id from graph API to another activity

我能夠獲取朋友列表和關聯的對象ID,但是我不知道如何將它們傳遞給另一個活動。 當我使用意圖傳遞數據時,在下一個活動中將得到空結果。 請有人幫我。

這是我的代碼

 public class MainFragment extends Fragment {

        private CallbackManager callbackManager;
        private TextView textView;
        private AccessTokenTracker accessTokenTracker;
        private ProfileTracker profileTracker;
        static ArrayList<String> friendlist = new ArrayList<String>();
        public MainFragment() {

        }


        @Override
        public void onCreate(Bundle savedInstanceState){
            super.onCreate(savedInstanceState);
            FacebookSdk.sdkInitialize(getActivity().getApplicationContext());

            callbackManager = CallbackManager.Factory.create();

          }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            return inflater.inflate(R.layout.fragment_main, container, false);
        }

        @Override
        public void onViewCreated(View view, Bundle savedInstanceState) {
            super.onViewCreated(view, savedInstanceState);
            LoginButton loginButton = (LoginButton) view.findViewById(R.id.login_button);
            final ProfilePictureView pictureView=(ProfilePictureView) view.findViewById(R.id.picture);;

            loginButton.setFragment(this);
            loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>()
             {
                @Override
                public void onSuccess(LoginResult loginResult) {

                    // AccessToken accessToken = loginResult.getAccessToken();
                    Toast.makeText(getActivity().getApplicationContext(),"Login Success", Toast.LENGTH_LONG).show();
                    LoginManager.getInstance().logInWithReadPermissions(getActivity(), Arrays.asList("user_friends","user_photos","email"));
                    GraphRequest request = GraphRequest.newMeRequest(
                            AccessToken.getCurrentAccessToken(),
                            new GraphRequest.GraphJSONObjectCallback() {
                                @Override
                                public void onCompleted(
                                        JSONObject object,
                                        GraphResponse response) {
                                    // Application code
                                    String name = object.optString("name");
                                    String id = object.optString("id");
                                    String email = object.optString("email");
                                    Log.d("Name",name);
                                    Log.d("ID",id);
                                    Log.d("email",email);
                                }
                            });
                    Bundle parameters = new Bundle();
                    parameters.putString("fields", "id,name,email");
                    request.setParameters(parameters);
                    request.executeAsync();

                    GraphRequestBatch batch = new GraphRequestBatch(
                            GraphRequest.newMyFriendsRequest(
                                    AccessToken.getCurrentAccessToken(),
                                    new GraphRequest.GraphJSONArrayCallback() {
                                        @Override
                                        public void onCompleted(
                                                JSONArray jsonArray,
                                                GraphResponse response) {
                                            JSONObject object=response.getJSONObject();


                                            try {
                                                JSONArray listFriends = object.getJSONArray("data");

                                                //get the entire friendlist
                                                for(int i=0;i<listFriends.length();i++)
                                                {
                                                    JSONObject firstFriend=listFriends.getJSONObject(i);

                                                    friendlist.add(firstFriend.optString("name"));
                                                    Log.d("listOfFriends", String.valueOf(friendlist));
                                                }

                                               // String friendName=firstFriend.optString("name");
                                               // Log.d("friendname",friendName);
                                                //String friendid = firstFriend.optString("id");

                                                Log.d("listFriends", listFriends.length() + "");


                                            } catch (JSONException e) {
                                                e.printStackTrace();
                                            }


                                        }
                                    }),
                            GraphRequest.newMyFriendsRequest(
                                    AccessToken.getCurrentAccessToken(),
                                    new GraphRequest.GraphJSONArrayCallback() {
                                        @Override
                                        public void onCompleted(
                                                JSONArray jsonArray,
                                                GraphResponse response) {
                                            // Application code for users friends
                                        }
                                    })
                    );
                    batch.addCallback(new GraphRequestBatch.Callback() {
                        @Override
                        public void onBatchCompleted(GraphRequestBatch graphRequests) {
                            // Application code for when the batch finishes
                        }
                    });
                    batch.executeAsync();



                }

                @Override
                public void onCancel() {
                    Toast.makeText(getActivity().getApplicationContext(),"Login Cancel", Toast.LENGTH_LONG).show();

                }

                @Override
                public void onError(FacebookException e) {
                    Toast.makeText(getActivity().getApplicationContext(),"Login Error", Toast.LENGTH_LONG).show();

                }

            });

        }

        @Override
        public void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            callbackManager.onActivityResult(requestCode, resultCode, data);

                Intent secondActivityIntent = new          Intent(MainFragment.this.getActivity(), BackCamera.class);

                secondActivityIntent.putExtra("friendlist", friendlist);
                Log.d("friendlistnew", String.valueOf(friendlist));

                startActivity(secondActivityIntent);
    }
            @Override
        public void onStop() {
            super.onStop();

        }

        @Override
        public void onResume() {
            super.onResume();
            Profile profile = Profile.getCurrentProfile();

        }
    }

提前致謝!

可以有多種解決方案,1.由於您已將好友列表聲明為靜態,因此您可以從任何地方直接訪問它

  1. 只需將好友列表放在應用程序類中,然后從那里獲取或設置數據

3,創建實現可序列化或可仿造的模式類

轉讓

intent.putStringArrayListExtra("friendlist", friendlist)

要得到

intent.getStringArrayListExtra("friendlist")

文件: putget

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM