为Android应用程序设置文件

问题描述:

我有一个用于我的android应用程序的XML设置文件。 应用程序发布时,它有一些默认值必须随应用程序一起发布。在用户更改设置后,必须更改此设置文件的值。 我使用XML资产文件来实现此功能。 该文件有一些默认值。通过发布应用程序,它也被复制到设备中。但是当我写入这个文件并回来时,似乎该文件从未改变过。 我使用一个文件管理器,并查看我的文件在设备上,看到这个文件从未改变,并有它的默认值。 我使用monondroid,这是我用在我的xmlsetting文件编写代码:为Android应用程序设置文件

public bool writeToFile (string newXmlContent) 
     { 
      try { 
       Stream sw= Application .Context .OpenFileOutput (AppConstants .xmlSettingFileName , 
                   FileCreationMode .Private ); 
       StreamWriter stw= new StreamWriter (sw); 
       stw.Write (newXmlContent); 
       stw.Flush(); 
       XmlContent = newXmlContent ; 
       stw.Close(); 
       sw=null; 
       return true; 

      } catch (Exception ex) { 
       Common .HandleException (ex); 
       return false ; 
      } 

     } 

这有什么错呢?

我发现,要实现设置页面,并使用应用程序设置的最佳方法是从首用。欲了解更多信息,请参阅:

developer.android.com/design/patterns/settings.html

developer.android.com/guide/topics/ui/settings.html

但是,如果任何机构希望实现一个配置file.can资产使用此propose.to读写资产文件必须重写应用程序类和复制资源文件中oncereate这个类的SD或设备记忆。之后你可以使用这个文件。

有没有特别的原因不使用内置设施?

我检索任何变化的持续性值是这样的:

var prefs = Application.Context.GetSharedPreferences("MyApp", FileCreationMode.Private); 
var somePref = prefs.GetString("PrefName", null); 

来存储它们:

var prefEditor = prefs.Edit(); 
prefEditor.PutString("PrefName", "Some value"); 
prefEditor.Commit(); 
+1

我需要添加一个prefEditor.Commit();在PutString命令之后的行来创建值棒。 – Fontanka16

+1

干杯;更新。 – manadart