我们可以在活动之间传递数据。例如,intent上的getStringExtra,getIntExtra和getArraylistExtra。有没有办法传递更复杂的数据结构,如Stack,Queue,Hashtable等?如果是这样,怎么样?
答案 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方法有助于提取数据: