2017-02-06 2 views
0

私は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"); 
    } 
+1

明らかに、設定ではnullではありません。それ以外の場合は、設定されません。どうしてそんなことになると思いますか? –

+0

多くのこのような問題に直面する前に、Javaの基本から始めておくべきだと思います。とにかく上記の両方の条件を使う方法は、&&(LEFTのNULLチェックを入れる)です。 - if(savedData!= null &&!savedData.isEmpty()) – Dibzmania

+0

私は '保存されたデータ。最初の行に 'saveString'が' null'に設定されていれば、 'saveData' = settings.getString(saveString、null);を使ってこのsaveStringを' savedData'に12行目で代入しています。私は何が間違っているの? –

答えて

0
if (myString != null && !myString.isEmpty()) { 
    // 
} 

これが動作しない場合、それはNULLではありません。動作していない場合は、あらかじめnullに直接設定してから、その関数がnullを返さない理由を調べてみてください。 なぜmyString!= nullがそれ自体では機能しないのかについては、私ができるよりも優れた説明ができる投稿があります。 Avoiding != null statements

関連する問題