Java 如何在Android上的片段中使用共享首选项?
我有一个片段,我想将Facebook id存储在一个共享的首选项中。我无法在get preference函数中写入mode private。我还想在另一个片段中访问这个共享偏好。我怎样才能做到 这是我的密码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,
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(上下文)…纠正代码的格式(提示:没有水平滚动条等)。