HOW TO:ListPreference上的监听器改变谷歌地图模式?

时间:2012-04-15 10:02:37

标签: java android google-maps

我想在 MapActivity.java 中设置 ListPreference,使用键“map_mode”设置实际的地图模式。因此,当我在“首选项”屏幕中单击“卫星”时,它会在地图上更改。

我有一个像这样 settings.xml (preference.xml)的ListPreference设置:

    <PreferenceCategory
        android:key="settings"
        android:title="Settings" >
    <CheckBoxPreference
        android:defaultValue="true"
        android:key="map_settings"
        android:summary="Enable or Disable Map Settings"
        android:title="Enable Map Settings" />

    <ListPreference
        android:defaultValue="Map"
        android:dependency="map_settings"
        android:entries="@array/mapMode"
        android:entryValues="@array/mapModeValues"
        android:key="map_mode"
        android:summary="Change the display of the map"
        android:title="Map Mode" />
</PreferenceCategory>

“map_mode”正在从 arrays.xml 中读取数组值:

<string-array name="mapMode">
    <item name="Map">Map</item>
    <item name="Satellite">Satellite</item>
    <item name="Traffic">Traffic</item>
</string-array>

<string-array name="mapModeValues">
    <item name="Map">Map</item>
    <item name="Satellite">Satellite</item>
    <item name="Traffic">Traffic</item>
</string-array>

谢谢。

这是PreferenceScreen。当用户按下其中一个选项时,我希望它更新MapActivity。

PreferenceScreen MapActivity

1 个答案:

答案 0 :(得分:0)

让您MapActivity来电registerOnSharedPreferenceChangeListener(),然后处理SharedPreference中的OnSharedPreferenceChangeListener更改。

或者,只需在onResume()中重新阅读并应用偏好设置,因为您的PreferenceActivityMapActivity不会同时出现在屏幕上。