2012-03-02 55 views
5

我一直在嘗試使用C#和MonoDroid的實現這個例子,但我有閱讀和寫作的資產文件困難閱讀:如何使用資源文件VS&MonoDroid的

http://docs.xamarin.com/android/advanced_topics/using_android_assets

我現在用的是仿真器,而不是設備。

首先,我無法找到Assets.Open的命名空間。我最終發現的是

const string lfn = MyAssetFile.txt; 
System.IO.StreamReader(Android.Content.Res.Resources.System.Assets.Open(lfn); 

這是正確的命名空間嗎?所有的

其次,我的資產文件被標記爲AndroidAsset並在VS「屬性」窗格「一直拷貝」,但我試圖讀取文件總是失敗(未找到文件)使用此語句:

string settings = ""; 
using (StreamReader sr = new System.IO.StreamReader (Android.Content.Res.Resources.System.Assets.Open(lfn))) settings = sr.ReadToEnd(); 

是否我的VS設置錯誤,導致資產文件未被複制到模擬器中,或者被複制正常但我的代碼打開/讀取它是錯誤的?

+0

不要忘記在VS屬性中設置資產文件的構建操作:BuildAction:AndroidAsset – AndyM 2012-11-08 23:30:32

回答

9

您必須使用:

const string lfn = "MyAssetFile.txt"; 
string settings = string.Empty; 

// context could be ApplicationContext, Activity or 
// any other object of type Context 
using (var input = context.Assets.Open(lfn)) 
using (StreamReader sr = new System.IO.StreamReader(input)) 
{ 
    settings = sr.ReadToEnd(); 
} 

如果我沒有記錯,因爲我還沒有得到的那一刻,Android.Content.Res.Resources.System.Assets引用的Android資產不是你的項目資產的IDE。您希望使用您的項目資產,因此您需要使用ActivitiesContexts中的AssetManager

例如:Activity類有一個名爲Assets的屬性。這是你使用的。或者您使用ViewContext.Assets屬性。

+0

謝謝,效果很好。 – 2012-03-03 16:03:58

-4

或者只是在頂部加入:

使用System.IO;

它會工作。

Xamarin團隊忘記有時會提及using東西。

相關問題