简体   繁体   English

HOW TO:ListPreference上的侦听器以更改Google Map模式?

[英]HOW TO: Listener on ListPreference to change Google Map Mode?

I want to make the ListPreference with key "map_mode" set the actual map mode in my MapActivity.java . 我想通过键“ map_mode”使ListPreference在我的MapActivity.java中设置实际的地图模式。 So that when I click "Satellite" for instance in the Preferences screen, it changes on the Map. 这样,当我在“首选项”屏幕中单击“卫星”时,它就会在地图上更改。

I have a ListPreference setup like this settings.xml (preference.xml): 我有一个像这样的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>

The "map_mode" is reading array values from this arrays.xml : “ 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>

Thank you. 谢谢。

This is PreferenceScreen. 这是PreferenceScreen。 When user presses one of these options I want it to update the MapActivity. 当用户按下这些选项之一时,我希望它更新MapActivity。

首选项屏幕MapActivity

Have your MapActivity call registerOnSharedPreferenceChangeListener() , then process the SharedPreference change in your OnSharedPreferenceChangeListener . 让您的MapActivity调用registerOnSharedPreferenceChangeListener() ,然后在OnSharedPreferenceChangeListener处理SharedPreference更改。

Or, simply re-read and apply the preference in onResume() , since your PreferenceActivity and your MapActivity will not be on the screen at the same time. 或者,只需重新阅读并在onResume()应用首选项,因为您的PreferenceActivityMapActivity将不会同时显示在屏幕上。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM