我正在尝试将我自己的自定义对象传递到bundle中:
Bundle b = new Bundle();
STMessage message = (STMessage)a.getAdapter().getItem(position);
b.putObject("message",message);
我得到错误:
The method putObject(String, Object) is undefined for the type Bundle
6条答案
按热度按时间xoshrz7s1#
一种方法是让自定义对象实现Parcelable接口并使用
Bundle.putParcelable/Bundle.getParcelable
lhcgjxsq2#
模型类
主要活动
接收器活动
//Kotlin
vfh0ocws3#
由于使用
Parsable
是为高性能IPC传输而设计的,正如在一些评论中提到的那样,我尝试使用不同的方法。我的方法使用谷歌的GSON库。
示例
你可以在实用类中有一个返回Gson示例的方法,这是为了干净的代码和组织。我将使用GsonBuilder,以防有人注册自定义适配器。
关键时刻!
推杆
获取
目前我还不知道这种方法的性能限制,但它工作得很好
6jygbczu4#
使自定义对象可打包或可序列化,然后使用putParcelable或putSerializable。
根据对象的复杂性,其中一个可能更容易。
qaxu7uf25#
正如Ryan所说。另外,如果您只想在软终止时传递一个对象,请考虑使用onRetainConfigurationInstance和getLastNonConfigurationInstance来传递可序列化对象。整个对象树必须是可序列化的。如果您通过Intent传递对象,请考虑稍后在架构稳定后将对象代码重构为可解析代码。最后,在将对象存储到Bundle中时,考虑使用类的完全限定名,如下所示:
希望能有所帮助JAL
w1jd8yoj6#
如果将对象类设置为可序列化的,则会产生效果