保存JSON Facebook结果在SharedPref



我试图将Facebook id和Facebook用户名保存在我的android应用程序上的SharedPreferences中,以便随时随地使用它,但logcat返回我"空"这是我的"Oncomplete"Facebook方法:

   public void onSuccess(LoginResult loginResult) {
                GraphRequest request = GraphRequest.newMeRequest(
                        loginResult.getAccessToken(),
                        new GraphRequest.GraphJSONObjectCallback() {
                            @Override
                            public void onCompleted(
                                    JSONObject object,
                                    GraphResponse response) {

                                String result = response.toString();
                                SharedPreferences pref = getActivity().getPreferences(0);
                                SharedPreferences.Editor edt = pref.edit();
                                edt.putString("result", result);
                                edt.commit();
                                Log.i("string","PROVAAAAAA");
                            }
                        });
                Bundle parameters = new Bundle();
                parameters.putString("fields", "id,name,link");
                request.setParameters(parameters);
                request.executeAsync();
            }

我注意到logcat不写"PROVAAAAAAA"这是我的回调方法:

 public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        CallbackManager callbackManager = CallbackManager.Factory.create();
        callbackManager.onActivityResult(requestCode, resultCode, data);
        SharedPreferences pref = getActivity().getPreferences(0);
        SharedPreferences.Editor edt = pref.edit();
        String id = pref.getString("facebook_id", "empty");
        Log.i("RESULT", id );
        Log.i("RESULT", "***************");
        edt.commit();
    }

当你真正想要的是PreferenceManager#getDefaultSharedPreferences时,你正在使用活动#getPreferences方法。前者被描述为"活动持久状态",这可能是您访问它时遇到问题的原因。

尝试用PreferenceManager.getDefaultSharedPreferences(getActivity())替换所有出现的getActivity().getPreferences(0)

最新更新