是否可以将Stack,Queue或Hashtable传递给Intent?

时间:2014-06-05 23:08:08

标签: android .net data-structures xamarin xamarin.android

我们可以在活动之间传递数据。例如,intent上的getStringExtra,getIntExtra和getArraylistExtra。有没有办法传递更复杂的数据结构,如Stack,Queue,Hashtable等?如果是这样,怎么样?

3 个答案:

答案 0 :(得分:1)

只要您的元素类型实现Serializable,就可以使用getSerializableExtra()

答案 1 :(得分:1)

如果堆栈或队列中的元素正在实现Serializable,那么您可以。 发送数据:

            Intent intent=new Intent(context, BlahActivity.class);
        intent.putExtra("data", (Serializable)data);
        startActivity(intent);

数据是您的队列/堆栈,并使用以下内容解压缩:

Intent intent=getIntent();
received_data=(<YOUR_COMPLEX_DATA_TYPE>)intent.getSerializableExtra("data");

答案 2 :(得分:0)

最简单的方法是将它们放入List或ArrayList,然后将Json.NET/ServiceStack/ProtoBuf序列化为字符串,将该字符串放入intent中,另​​一侧将其反序列化为List。

如果活动仅仅是为了从你的代码运行,我通常只使用一个静态的Dictionary容器,然后使用Guid进入字符串extras进行推/拉。这是ViewModels的容器:https://github.com/sami1971/SimplyMobile/blob/master/Core/SimplyMobile.Core/ViewModelContainer.cs

扩展和使用ViewModel方法有助于提取数据:

https://github.com/sami1971/SimplyMobile/blob/master/Android/SimplyMobile.Android/Extensions/ActivityExtensions.cs