4

xml から純粋にロードしているプリファレンス アクティビティに、加速度計モードのリスト プリファレンスがあります。ユーザーのデバイスが加速度計を持っていない、またはサポートしていない場合、アレイ内のアイテムを完全に削除することはありません。この 1 つのオプションを削除するには、別のリスト設定を作成する必要がありますか? (すべてを 1 つにまとめたいと思います。) 以下の設定でどのように削除できますか?

ヒントをありがとう。

ジェイソン

<string-array name="mode_text">
        <item>Others Modes</item>
        <item>Others Modes</item>
        <item>Accelerometer Mode</item>
    </string-array>
    <string-array name="mode_values">
        <item>0</item>
        <item>1</item>
        <item>2</item>
    </string-array>
</resources>
4

1 に答える 1

5

「配列内のアイテムを完全に削除する」と言う場合、ListPreferenceをPreferenceScreenに表示しないようにすることを意味しますか?または、設定値を取得しようとしたときにnull値を返すようにしますか?

オーケー、わかりました。配列内のその項目だけを削除することはできないと思います。プログラムで、ListPreferenceのエントリとentryValuesに新しい配列を設定する必要があります。ListPreferenceはそのキーで見つかります。

次に例を示します。

    if (accelerometerNotSupported) {
        ListPreference accelMode = (ListPreference) findPreference("acceleratorMode");
        accelMode.setEntries(new String[]{"Others Modes","Others Modes"});
        accelMode.setEntryValues(new String[]{"0", "1"});
    }

これにより、リストの設定が変更され、これら2つのオプションのみが表示されます。

于 2011-04-26T01:17:03.167 に答える