gpt4 book ai didi

java - 无法获取 fragment 中保存的共享首选项

转载 作者:行者123 更新时间:2023-12-01 19:46:49 25 4
gpt4 key购买 nike

我正在开发一个应用程序,在获取我的共享首选项(保存在登录 Activity 中)时,我试图将其获取到仪表板 fragment 中,但我无法获取它。之后我检查了是否保存,然后我使用了

boolean ok= editor.commit();
Toast.makeText(Login.this, "Saved: "+ok, Toast.LENGTH_LONG).show();

我的 toast 将消息显示为 已保存:true

经过这次尝试,我假设我的数据已保存到首选项,但我无法获取它。下面是我的仪表板 fragment 代码。

public class dashboard extends Fragment {
private TextView comp_text,mail_text,gst_text;
private String mUsername;
private SharedPreferences mSharedPreferences;



@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

//this inflates out tab layout file.
View x = inflater.inflate(R.layout.dashboard_frag, null);
comp_text=(TextView)x.findViewById(R.id.company_id);
mail_text=(TextView)x.findViewById(R.id.email_id);
gst_text= (TextView)x.findViewById(R.id.gst_id);
initSharedPreferences();
Toast.makeText(getActivity(), "Logged member-> "+mUsername, Toast.LENGTH_LONG).show();
return x;

}
private void initSharedPreferences() {
mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
mUsername = mSharedPreferences.getString(Constants.USERNAME, "");

}
}

这里我的 Toast 显示 **logged member-> **,这意味着用户名没有任何可打印的内容,并且无法获取首选项。

我仍然很困惑,如果您愿意,我可以显示我保存偏好设置的位置,这是我的观点。

帮助将不胜感激!谢谢!

编辑 1 ----这是我保存首选项的 onResponse 函数。

 public void onResponse(Call<ServerResponse> call, retrofit2.Response<ServerResponse> response) {
if(response.isSuccessful()) {
ServerResponse serverResponse = response.body();
if(serverResponse.getMessage().equals(username)) {
SharedPreferences.Editor editor = mSharedPreferences.edit();
editor.putBoolean("LoggedIn",true);
editor.putString(Constants.USERNAME,serverResponse.getMessage());

boolean ok= editor.commit();


Toast.makeText(Login.this, "Saved: "+ok, Toast.LENGTH_LONG).show();
goToProfile();
}
} else {
Gson gson = new Gson();
ServerResponse errorResponse = null;
try {
errorResponse = gson.fromJson(response.errorBody().string(), ServerResponse.class);
} catch (IOException e) {
e.printStackTrace();
}
Snackbar.make(loginButton,errorResponse.getMessage(),Snackbar.LENGTH_SHORT).show();
}
}

最佳答案

试试这个

SharedPreferences.Editor editor = getSharedPreferences("my_prefs", MODE_PRIVATE).edit();;
editor.putBoolean("LoggedIn",true);
editor.putString(Constants.USERNAME,serverResponse.getMessage());

boolean ok= editor.commit();

然后在Fragment中

mSharedPreferences = getActivity().getSharedPreferences("my_prefs", MODE_PRIVATE); ;
mUsername = mSharedPreferences.getString(Constants.USERNAME, "");

关于java - 无法获取 fragment 中保存的共享首选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52923614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com