2017-12-24 6 views
0

この機能を使用してAndroid Appから共有設定を抽出します。しかし、要求されたフィールドが存在するかどうかはわかりません。私はtry catch内でコードをラップするか、フィールドが存在しないときにはgetString()は安全ですか?try catch内でgetSharedPreferencesをラップする必要がありますか?

public String loadPreferences(String what){ 
    SharedPreferences settings =this.getSharedPreferences("settings", Context.MODE_PRIVATE); 
    String content =settings.getString(what, "empty"); 
    return content; 
} 

答えて

1

あなたがすべきread documentation of getString here、それははっきり言って、

は、それが存在する場合、優先値を返し、またはdefValue。 ClassCastException - この名前のプリファレンスがあり、 ではない場合、文字列がスローされます。この値はnullでもかまいません。あなたのケースでは

defValue

「空」あるので、例外はあなたが返すようにしようとしている値は、指定されたタイプでない場合にのみ、それはしかしgetString()の場合であってはなりません可能ですこのリンクを検索した場合

2

「フィールド」で、あなたはwhatが何であれをキーと値を意味している場合、getString()はあなたのコードスニペットでnullを返しません。 whatと入力した値が返されます。値がない場合は"empty"が返されます。

+0

は「値なし」と等しいですティン "? –

+0

@AliSheikhpour:はい。 – CommonsWare

1

:あなたがこの方法を見つけるだろう

https://developer.android.com/reference/android/content/SharedPreferences.htmlあなたはこのキーでSharedPreferencesには何も保存されhavnt場合を意味し、あなたはそれがためにあなたのケース

String content =settings.getString(what, "empty"); 

ので、デフォルト値を返しますよりも、このキーの値を取得しようとしている

getString(String key, String defValue) 

whatキーこのキーで何かを保存していて、その値を取得しようとした場合、デフォルト値の"empty"が返されます。

関連する問題