問題:今天在實驗xamarin中SimpleAdapter綁定到ListView時,出現閃退的現象,
見圖:
解決方法:
SimpleAdapter中的構造函數public SimpleAdapter(Context context, IList<IDictionary<string, object>> data, int resource, string[] from, int[] to) 第二個構造參數IList<IDictionary<string, object>> data是一個借口,但是在創建Item的時候我使用了如下代碼:
var data = new List<IDictionary<string, object>>();
IDictionary<string, object> item;
item = new Dictionary<string, object>(); item.Add("Name", "張三); item.Add("Sex", "Male"); data.Add(item);
修改后代碼如下:
var data = new List<IDictionary<string, object>>();
IDictionary<string, object> item;
item = new javaDictionary<string, object>(); item.Add("Name", "張三); item.Add("Sex", "Male"); data.Add(item);
使用VS2012自帶的Android Device Logging工具可以看見如下信息:
原因:
vs2012中無法使用代碼檢查出此問題,屬于運行時問題,但是異常又無法正確拋出,通過Android Device Logging工具才能看見,原來是因為System.Collections.Generic.Dictionary無法在運行時轉換為java.util.Map,而Android.Runtime.JavaDictionary可以,至于為什么無法轉換,無非就是沒有繼承的關系.
Mono for android是很好,但這個也太坑了吧,非要面向接口,好歹弄個文檔說明一下。
新聞熱點
疑難解答