アプリに Listpreferences があります。インストール直後にデフォルトに設定されているようには見えません - それらはnullのようです。インストール直後にデフォルト設定が設定されない理由を突き止めようとしています。私のメインコードには次のものがあります。
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
InUnits = sp.getString("List1", "defValue");
InAngs = sp.getString("List2", "defValue");
OutUnits = sp.getString("List3", "defValue");
OutAngs = sp.getString("List4", "defValue");
上記のコードを実行した直後、各変数には、以下の ListPreference で割り当てた実際の値ではなく、「defValue」が含まれます。
私の設定xmlファイルは「settings.xml」と呼ばれています。そこにある ListPreferences の 1 つが次のようになります。
<ListPreference
android:key="List1"
android:title="Input: Alph"
android:summary="Choose Alph or Ralph"
android:entries="@array/inputAlph"
android:entryValues="@array/input_Alph_codes"
android:dialogTitle="Input Alph"
android:defaultValue="ININ"/>
私のstrings.xmlファイルの一部は次のようになります。
<string-array name="inputUnits">
<item>Alph</item>
<item>Ralph</item>
</string-array>
<string-array name="input_Alph_codes">
<item>ININ</item>
<item>INMM</item>
</string-array>
メニューに移動してから設定すると、デフォルトがチェックされている(ラジオボタン付き)ことがわかります。その後、設定メニューからメイン画面に戻ると、すべて順調です。...次に、上記の各変数に適切なデフォルト値が割り当てられます。
これは、最初にアプリを電話にインストールしたときにのみ発生します。設定画面に一度行ってからすぐに出た後、アプリは問題なく、設定の変更を受け入れます。
ちなみに、ご覧のとおり、「List1」は、私の res/xml フォルダーにある settings.xml というファイル内の android:key です。