インテントオブジェクトのすべてのエキストラ(およびその値)をリストし、辞書に保存します。Xamarin.Androidのインテントからすべてのエキストラのリストを抽出して辞書に保存します。
最初の問題は、すべてのキーを知っている必要はありません。 2番目の問題は、一部の値が文字列であり、一部がブール値などであるということです。 ループ内の値をキーでループして、C#Xamarin.Androidの値を保存するにはどうすればよいですか?
インテントオブジェクトのすべてのエキストラ(およびその値)をリストし、辞書に保存します。Xamarin.Androidのインテントからすべてのエキストラのリストを抽出して辞書に保存します。
最初の問題は、すべてのキーを知っている必要はありません。 2番目の問題は、一部の値が文字列であり、一部がブール値などであるということです。 ループ内の値をキーでループして、C#Xamarin.Androidの値を保存するにはどうすればよいですか?
ここで私はしばらくして見つけたものを、誰かが時間を節約できるように共有します。
//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());
}
あなたはこのようにも便利な拡張メソッド作ることができます:
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;
}
LINQバリアント
Bundle bundle = intent.Extras;
Dictionary<string, object> dict = bundle.KeySet()
.ToDictionary<string, string, object>(key => key, key => bundle.Get(key));