2016-12-06 3 views
1

インテントオブジェクトのすべてのエキストラ(およびその値)をリストし、辞書に保存します。Xamarin.Androidのインテントからすべてのエキストラのリストを抽出して辞書に保存します。

最初の問題は、すべてのキーを知っている必要はありません。 2番目の問題は、一部の値が文字列であり、一部がブール値などであるということです。 ループ内の値をキーでループして、C#Xamarin.Androidの値を保存するにはどうすればよいですか?

答えて

0

ここで私はしばらくして見つけたものを、誰かが時間を節約できるように共有します。

//Didactic version 
Bundle b = myIntent.Extras; //Where myIntent is of course an Intent 
ICollection<string> c = b.KeySet(); //This is the collection of extras 
Dictionary<string, string> d = new Dictionary<string, string>(); 

foreach (var key in c) 
{ 
    Object value = b.Get(key); 
    d.Add(key, value.ToString()); 
} 

//Short version 
var b = myIntent.Extras; 
var d = new Dictionary<string, string>(); 

foreach (var key in b.KeySet();) 
{ 
    d.Add(key, b.Get(key).ToString()); 
} 
1

あなたはこのようにも便利な拡張メソッド作ることができます:

public static Dictionary<string, string> ToDictionary(this Bundle bundle) 
{ 
    var dictionary = new Dictionary<string, string>(); 
    foreach (var key in bundle.KeySet()) 
    { 
     dictionary.Add(key, b.Get(key).ToString()); 
    } 
    return dictionary; 
} 
3

LINQバリアント

Bundle bundle = intent.Extras; 
Dictionary<string, object> dict = bundle.KeySet() 
    .ToDictionary<string, string, object>(key => key, key => bundle.Get(key)); 
関連する問題