Java 如何在Android上的片段中使用共享首选项?

Java 如何在Android上的片段中使用共享首选项?,java,android,facebook,android-fragments,sharedpreferences,Java,Android,Facebook,Android Fragments,Sharedpreferences,我有一个片段,我想将Facebook id存储在一个共享的首选项中。我无法在get preference函数中写入mode private。我还想在另一个片段中访问这个共享偏好。我怎样才能做到 这是我的密码 Session.openActiveSession(getActivity(), true, new Session.StatusCallback() { @Override public void call(Session session,

我有一个片段,我想将Facebook id存储在一个共享的首选项中。我无法在get preference函数中写入mode private。我还想在另一个片段中访问这个共享偏好。我怎样才能做到

这是我的密码

Session.openActiveSession(getActivity(), true, new Session.StatusCallback()
{
    @Override
    public void call(Session session,
                     SessionState state,
                     Exception exception) {

        if (session.isOpened()) {
            Request.executeMeRequestAsync(session,new Request.GraphUserCallback() {

                @Override
                public void onCompleted(GraphUser user, Response response) {

                    if (user != null) {
                        t = (TextView)rootView.findViewById(R.id.textView2);
                        p = (ProfilePictureView)rootView.findViewById(R.id.profilePictureView1);
                        p.setProfileId(user.getId());
                        s = user.getName();
                        t.setText(s);
                        s1 = user.getId();

                        private void SavePreferences(String key,String value)
                        {
                            SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
                            SharedPreferences.Editor editor = sharedPreferences.edit();
                            editor.putString(key, value);
                            editor.commit();
                        }
  • 创建单独的会话类:

    public class Session {
    private static String PREF_NAME = "Memory";
    private static String FBID = "FBID ";
    public static boolean saveSessionId(String FBID , Context context) {
    Editor editor = context.getSharedPreferences(PREF_NAME, 0).edit();
    editor.putString(FBID , FBID);
    return editor.commit();
    }
    
    public static String getSessionId(Context context) {
    SharedPreferences savedSession = context.getSharedPreferences(
            PREF_NAME, 0);
    return savedSession.getString(FBID , null);
    }
    }
    

当您要保存ID时,请调用save方法。然后,以相同的方式调用
getsessionid
方法以获取该ID。

更新
SavePreferences
方法,如下所示:

private static String MY_PREFS = "My_Preference";
private void SavePreferences(String key, String value) {
    SharedPreferences sharedPreferences = getActivity().getSharedPreferences(
            MY_PREFS, 0);
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putString(key, value);
    editor.apply();
}

片段中使用
共享首选项
;见下文

首次写入
SharedReferences

SharedPreferences pref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor edt = pref.edit();
edt.putString("facebook_id", id);
edt.commit();
这里id是包含你所拥有的Facebook id的字符串,0表示私有模式

其次,在另一个
片段中读取存储在
SharedReference
中的Facebook id:

SharedPreferences pref = getActivity().getPreferences(Context.MODE_PRIVATE);
String id = pref.getString("facebook_id", "empty");
如果facebook_id在
SharedReference

@Override中为空,则返回的默认值为空
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setHasOptionsMenu(true);
    getSharedPrefs();
}

private void getSharedPrefs() {
    sharedpreferences = getActivity().getSharedPreferences(
            Data.MY_PREFERENCES, Context.MODE_PRIVATE);

    // check for all to be loaded here
    boolean isValid = false;

    int posImage = 0;

    if (sharedpreferences.contains(Data.COLUMN_IMAGENUMBER)) {
        posImage = sharedpreferences.getInt(Data.COLUMN_IMAGENUMBER, 0);
        if (posImage >= 0 || posImage < Data.PICS.length) {
            isValid = true;
        }
    } else {
        isValid = false;
    }
}

@Override
public void onStop() {
    super.onStop();
    Editor editor = sharedpreferences.edit();
    editor.putInt(Data.COLUMN_IMAGENUMBER, cv.currentPuzzleImagePosition);
    editor.apply();
}
创建时的公共void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); 设置选项菜单(真); getSharedPrefs(); } 私有void getSharedPrefs(){ SharedReferences=getActivity()。GetSharedReferences( Data.MY_首选项、Context.MODE_PRIVATE); //检查此处要加载的所有文件 布尔值isValid=false; int posImage=0; if(sharedReferences.contains(Data.COLUMN\u IMAGENUMBER)){ posImage=sharedpreferences.getInt(Data.COLUMN\u IMAGENUMBER,0); if(posImage>=0 | | posImage
您也可以这样做

editor = getActivity().getSharedPreferences(MY_PREFS_NAME, Context.MODE_PRIVATE).edit();
                        editor.putString("yourtextvalueKey", test);
                        editor.commit();
并且得到

prefs = getActivity().getSharedPreferences(MY_PREFS_NAME, Context.MODE_PRIVATE);
        text = prefs.getString("yourtextvalueKey", null);

请尝试使用此代码。对于此
共享首选项
,这就足够了,它可以在“活动”或
片段
中工作<代码>共享首选项
不能反映活动或
片段
或不能生效


<更多>点击< /p>尝试<代码>上下文.MoDyBuy。使用PaseReMeAngase.GETSyfDead(上下文)…纠正代码的格式(提示:没有水平滚动条等)。