Java 用于修改mapView视图的共享首选项

Java 用于修改mapView视图的共享首选项,java,android,android-layout,settings,Java,Android,Android Layout,Settings,我需要比我更有经验的人的帮助,我不久前就开始研究如何为Android编写应用程序,但无论如何,我解释了这个问题 在我的应用程序中,我想使用3个复选框首选项更改模式以查看地图sat、traffic、streetView。我创建了一个只有一个选项的选项菜单,这个选项用3复选框打开布局 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <CheckBoxPreferenc

我需要比我更有经验的人的帮助,我不久前就开始研究如何为Android编写应用程序,但无论如何,我解释了这个问题

在我的应用程序中,我想使用3个复选框首选项更改模式以查看地图sat、traffic、streetView。我创建了一个只有一个选项的选项菜单,这个选项用3复选框打开布局

    <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<CheckBoxPreference android:key="Sat"
android:title="Satellitare" android:summary="Mappa con vista satellitare"
        android:defaultValue="false" />
    <CheckBoxPreference android:key="Traff"
android:title="Traffico" android:summary="Mappa con vista traffico"
        android:defaultValue="false" />
    <CheckBoxPreference android:key="StrView"
android:title="StreetView" android:summary="Mappa con vista Street View" 
       android:defaultValue="false" />
</PreferenceScreen>
在另一个文件Navi.java中,我有运行映射所需的所有代码。所有功能:无sat或其他设置的基础视图地图、选项menù和布局工作

如何使用复选框更改地图的设置

谢谢所有帮助我的人

获取包含首选项活动数据的SharedReferences对象:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
现在获取所需的值:

boolean sat = prefs.getBoolean("Sat", false);
boolean traff = prefs.getBoolean("Traff", false);
boolean streetView = prefs.getBoolean("StrView", false);
并在地图视图中设置它们:

顺便说一下,setStreetView不推荐使用:

不赞成。不再支持街景可用性突出显示。此方法作为禁止操作


所以我不认为使用它会导致地图发生任何变化。

你的意思是,你想在代码中动态设置复选框值吗?不,我想用复选框控制地图的视图。例如,如果我检查sat,地图视图将切换到satellitar和ec。首先,非常感谢您的帮助。我在importazioni.Java文件中使用了SharedReference,在同一个文件中,我为每个变量sat、traff、streetview设置了布尔值。接下来,在Navi.Java类中,我设置了对变量的调用,但是在这个文件中,无法将sat、traff和streetView识别为变量。我忘了一段什么?因为我已经了解了从另一个活动调用变量的方法(在这种情况下是菜单),但我不明白为什么eclipse会给我这个错误。如果sat、traff和streetView变量在Impostazioni.java中声明为局部变量,您就不能在Navi.java中访问它们。在Navi.java中声明并获取它们的值您可以从应用程序中的任何地方访问共享首选项现在代码正常,在emulator中我没有错误,但是当我进入菜单并选中例如卫星框时,当我返回主菜单时,我在地图上看不到任何更改。如果我没记错,当一个活动启动菜单时,第一个是冻结的navi,需要一个onResume来刷新数据,这种情况类似吗?当我从菜单返回并重新启动navi活动时,需要调用代码中的简历吗?是。阅读Navi.java的onResume中的首选项并更新地图视图。好的,我记得在我的noob情况下,我想代码是:@Override protected void onResume{super onResume;SharedReferences prefs=PreferenceManager.GetDefaultSharedReferencesGetApplicationContext;}当我从菜单返回到主活动navi时,我会调用首选项管理器
boolean sat = prefs.getBoolean("Sat", false);
boolean traff = prefs.getBoolean("Traff", false);
boolean streetView = prefs.getBoolean("StrView", false);
mapView.setSatellite(sat);
mapView.setTraffic(traff);
mapView.setStreetView(streetView);