私はAndroidを学んでいますが、 sharedPreferences.Editor
を使用する前に保存したsharedPreferences
にデータがあるかどうかを確認するためにこれらのコードを書きます。保存されているデータがある場合は何かします。しかし、if (savedData != null)
ステートメントの下のコードは、savedData
に値があるかどうかにかかわらず、常に実行されます。`savedData`が任意の値またはnullに設定されていても` if(savedData!= null) `のコードが実行されるのはなぜですか
しかし、私がif (!savedData.isEmpty()
を使用するとき、それは私がそれが意味することをしています。
しかし、私は文字列がnull
であるならば、isEmpty()
は実行されませんので、我々は文字列でisEmpty()
を使用してはならないことStackOverflowの上で見つかりました。
if (savedData != null)
がなぜ機能していないのかを知りたかっただけですが、if (!savedData.isEmpty())
です。
マイコード:ここではLog.d("isRunning : ", "True")
の下にif
のステートメントが常に実行されています。
private String saveString = null;
private ListView listView;
private static List<String> listArray = new ArrayList<String>();
private SaveListInSharedPreferences saveListInSharedPreferences = new SaveListInSharedPreferences();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SharedPreferences settings = getPreferences(MODE_PRIVATE);
String savedData = settings.getString(saveString, null);
if (savedData != null){
listArray = saveListInSharedPreferences.getList(savedData);
Log.d("isRunning : ", "True");
}
明らかに、設定ではnullではありません。それ以外の場合は、設定されません。どうしてそんなことになると思いますか? –
多くのこのような問題に直面する前に、Javaの基本から始めておくべきだと思います。とにかく上記の両方の条件を使う方法は、&&(LEFTのNULLチェックを入れる)です。 - if(savedData!= null &&!savedData.isEmpty()) – Dibzmania
私は '保存されたデータ。最初の行に 'saveString'が' null'に設定されていれば、 'saveData' = settings.getString(saveString、null);を使ってこのsaveStringを' savedData'に12行目で代入しています。私は何が間違っているの? –