亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法在片段中獲取已保存的共享首選項

無法在片段中獲取已保存的共享首選項

慕哥9229398 2021-12-01 15:43:32
我正在開發一個應用程序,在獲取我的共享首選項(保存在登錄活動中)時,我試圖在儀表板片段中獲取它,但我無法獲取它。在此之后,我檢查了是否已保存,然后我使用了boolean ok= editor.commit();Toast.makeText(Login.this, "Saved: "+ok, Toast.LENGTH_LONG).show();我的吐司將消息顯示為Saved:true在這次嘗試之后,我假設我的數據已保存到首選項,但我無法獲取它。下面是我的儀表板 Fragmenr 代碼。public class dashboard extends Fragment {private TextView comp_text,mail_text,gst_text;private String mUsername;private SharedPreferences mSharedPreferences;@Nullable@Overridepublic 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-> **,這意味著 musername 沒有任何可打印的內容并且無法獲取首選項。我仍然很困惑,這是我的觀點,如果您愿意,我可以顯示我保存首選項的位置。幫助將不勝感激!謝謝 !編輯 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();                }            } 
查看完整描述

2 回答

?
紅顏莎娜

TA貢獻1842條經驗 獲得超13個贊

解決方案:


這是存儲和檢索的簡單示例 Shared Preferences


在首選項中設置值:

// MY_PREFS_NAME - a static String variable like: 

//public static final String MY_PREFS_NAME = "MyPrefsFile";

SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit();

 editor.putString("name", "Elena");

 editor.putInt("idName", 12);

 editor.commit();

從首選項中檢索數據:

SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE); 

String restoredText = prefs.getString("text", null);

if (restoredText != null) {

  String name = prefs.getString("name", "No name defined");//"No name defined" is the default value.

  int idName = prefs.getInt("idName", 0); //0 is the default value.

}

在您的情況下,您可能想要替換您的代碼,如下所示:


嘗試這個


SharedPreferences.Editor editor = getSharedPreferences("my_prefs", MODE_PRIVATE).edit();

editor.putBoolean("LoggedIn",true);

editor.putString(Constants.USERNAME,serverResponse.getMessage());

boolean ok= editor.commit();

然后在片段中


mSharedPreferences = getActivity().getSharedPreferences("prefs", MODE_PRIVATE); ;

mUsername = mSharedPreferences.getString(Constants.USERNAME, "");

如果要注銷并刪除用戶登錄,只需清除SharedPreferences:


SharedPreference.Editor pref = context.getSharedPreferences("prefs", MODE_PRIVATE).edit();

pref.clear();

pref.commit();

希望這可以幫助。


查看完整回答
反對 回復 2021-12-01
?
有只小跳蛙

TA貢獻1824條經驗 獲得超8個贊

嘗試這個


SharedPreferences.Editor editor = getSharedPreferences("my_prefs", MODE_PRIVATE).edit();;

                    editor.putBoolean("LoggedIn",true);

                    editor.putString(Constants.USERNAME,serverResponse.getMessage());


                   boolean ok= editor.commit();

然后在片段中


mSharedPreferences = getActivity().getSharedPreferences("my_prefs", MODE_PRIVATE); ;

    mUsername = mSharedPreferences.getString(Constants.USERNAME, "");


查看完整回答
反對 回復 2021-12-01
  • 2 回答
  • 0 關注
  • 146 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號