當單擊登錄按鈕并且 SharedPreferences 中沒有保存任何內容時,我正在嘗試敬酒“未保存用戶”。但是當我使用這段代碼時,即使 SharedPreferences 為空,它也總是會繼續執行 else 陳述句:
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick (View v) {
SharedPreferences preferences = getSharedPreferences("MY_PREFS", MODE_PRIVATE);
if (preferences == null){
Toast.makeText(MainActivity.this, "No user saved", Toast.LENGTH_SHORT).show();}
MY_PREFS.xml
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map />
有沒有更好的方法來撰寫 if 陳述句?
uj5u.com熱心網友回復:
當您獲得SharedPreferences實體時,應用程式將創建空檔案,因此它將始終存在并且不會存在null,因為您可以呼叫然后edit()將一些初始資料放入其中。但是在修改這個檔案之前,你可以檢查哪些鍵已經在里面
Map<String, ?> storedValues = preferences.getAll();
int numberOfStoredValues = storedValues.size();
numberOfStoredValues0當其中沒有存盤任何內容時(還),顯然會是這樣。所以你if應該如下所示
if (preferences.getAll().size() == 0)
Toast.makeText(MainActivity.this, "No user saved", Toast.LENGTH_SHORT).show();
請注意,您還可以檢查這些首選項中是否已存在某些特定鍵,例如登錄已存盤
if (preferences.contains(KEY_LOGIN))
uj5u.com熱心網友回復:
先生,一旦您清除 SharedPreference 并嘗試
SharedPreferences sp = getSharedPreferences("MYKEY",0);
SharedPreferences.Editor editor = sp.edit();
editor.clear();
editor.commit();
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/512304.html
