Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android应用程序记住设置_Android_Google Maps_Xamarin_Remember Me_Appsettings - Fatal编程技术网

Android应用程序记住设置

Android应用程序记住设置,android,google-maps,xamarin,remember-me,appsettings,Android,Google Maps,Xamarin,Remember Me,Appsettings,我正在使用Xamarin进行编码,对应用程序设置有疑问 是否可以进行应用程序范围的设置?我给大家举个例子: 我有一个地图应用程序。我有一个列表视图,用户可以选择地图是使用街景、卫星视图还是默认视图 取决于在ListView中选择的项目,取决于显示的地图视图的类型 在何处以及如何保存此选择,以使此值在整个应用程序中可见,并且当用户退出应用程序时,当用户再次启动应用程序时,可以记住此设置 提前感谢我想您熟悉Java I/O和android的基本概念。所以我要说: 对于Android中的数据持久性,您

我正在使用Xamarin进行编码,对应用程序设置有疑问

是否可以进行应用程序范围的设置?我给大家举个例子:

我有一个地图应用程序。我有一个列表视图,用户可以选择地图是使用街景、卫星视图还是默认视图

取决于在ListView中选择的项目,取决于显示的地图视图的类型

在何处以及如何保存此选择,以使此值在整个应用程序中可见,并且当用户退出应用程序时,当用户再次启动应用程序时,可以记住此设置


提前感谢

我想您熟悉Java I/O和android的基本概念。所以我要说:

对于Android中的数据持久性,您有两个主要解决方案:

  • SQLite数据库
  • 文件系统
我建议您使用文件系统,因为您实际上不需要使用关系约束来组织数据,并且可能不需要让大量数据持久化

Android文档非常清楚如何保存文件:

我建议您创建一个包含HashMap属性的设置类:

public class Settings implements Parcelable{
    public static HashMap<String,String> settings;

    public static void readSettings(){
        //Here you read your settings file and you fill your hashmap
    }

    public static void writeSettings(){
        //Here you iterate through your hashmap and you write your setting files
    }
}
公共类设置实现可包裹{
公共静态哈希映射设置;
公共静态void readSettings(){
//在这里,您可以读取设置文件并填充hashmap
}
公共静态无效写入设置(){
//在这里,您遍历hashmap并编写设置文件
}
}
每个活动都可以访问设置,因为属性/方法是静态的。设置也将在每个活动中同步(如果您更改了一个活动中的设置,则每个其他活动都会注意到)


如果您需要一些澄清,请在下面留下评论。

是的,这是可能的,而且非常简单。通常使用保存简单的应用程序设置。它们可以从应用程序中的任何位置读取

为了写作

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);
Editor editor = sp.edit();
editor.putBoolean("someBoolean", true);
editor.putString("someString", "string");
editor.commit();
阅读

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);
boolean someBoolean = sp.getBoolean("someBoolean", false);
boolean someString = sp.getString("someString", null);

您应该看看这里您希望用户在运行时设置设置吗?我想我有一个更好的解决办法。让我知道。SharedReferences更简单,更适合这种情况。你完全正确!在这种情况下,使用这种自定义方法跟踪设置可能毫无价值,而且更复杂。但在某些情况下,将对象序列化到设置文件中可能很方便。对于SharedReferences,您需要一个外部库来完成此操作(GSon)。但最后,你得到了最有用的答案,我给你!文件方法的优点是代码可以跨平台工作,因此您可以将其用于iOS和WP8版本的应用程序以及Android版本。使用类似于Json.NET或ServiceStack.Text的东西将对象序列化到文件中(无需在其中实现Parcelable或任何其他特定于平台的基)。@Skall我没有想到这一点,这是真的。我个人总是喜欢尽可能地独立于平台,所以当我想使用多个平台时,我不需要更改很多代码。这就是为什么我建议这个方法!我可以使用SharedReferences保存对象吗?@garry否您不能
SharedReferences
只能存储
键/值
对。@garry嗯,您可以将对象转换为JSON字符串,然后保存字符串,尽管这可能不是一个好方法。