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