android反序列化对象?
如何反序列化此类型:android反序列化对象?,android,android-intent,Android,Android Intent,如何反序列化此类型: public Intent putExtra(String name, Serializable value) 例如: intent.putExtra("activityToPass", GoToThisActivity.class); ??? getIntent().getExtras.getSerializable("activityToPass"); 如何做到这一点请 请帮忙 如果要将自定义对象从一个活动传递到另一个活动,首先必须有自定义对象的类来实现jav
public Intent putExtra(String name, Serializable value)
例如:
intent.putExtra("activityToPass", GoToThisActivity.class);
???
getIntent().getExtras.getSerializable("activityToPass");
如何做到这一点请
请帮忙 如果要将自定义对象从一个活动传递到另一个活动,首先必须有自定义对象的类来实现
java.io.Serializable
:
public class SomeObject implements Serializable {
private String name;
public SomeObject (final String name) {
this.name = name;
}
[...]
}
final SomeObject myExtra = new SomeObject("any name");
然后,您可以将此myExtra添加到调用新的活动的意图中:
final Intent intent = new Intent(this, GoToThisActivity.class);
intent.putExtra("serializedExtra", myExtra);
startActivity(intent);
在您的GoToThisActivity
class'onCreate
方法中,您可以将此额外内容提取为:
final Intent intent = getIntent();
if (intent.hasExtra("serializedExtra"))
final SomeObject myExtra= (SomeObject)intent.
getSerializableExtra("serializedExtra");
[...]
}
现在,新活动中有了自定义对象
更新1:将类传递给具有意图的其他活动
如果要将类
实例传递给意图:
intent.putExtra("classExtra", GoToThisActivity.class);
并在其他活动中对其进行反序列化:
if (intent.hasExtra("classExtra"))
{
final Class<?> classExtra= (Class<?>)intent.
getSerializableExtra("classExtra");
[...]
}
您在意图中添加了额外的内容
:
intent.putExtra("buttonPicks", new ButtonPick[]
{ButtonPick.DELETE,ButtonPick.EDIT});
在另一个活动中,将其反序列化:
if (intent.hasExtra("buttonPicks"))
{
final Object[] buttonPicks= (Object[])intent.
getSerializableExtra("buttonPicks");
[...]
}
您必须将数组强制转换为Object[]
,而不考虑原始的按钮图标[]
数组中的元素有其正确的类型,因此
{ButtonPicks.EDIT,ButtonPicks.DELETE}
成员。
您需要单独强制转换它们。通过serializable传递一个类怎么样?我不想再创建任何自定义对象。示例:intent.putExtra(“activityToPass”,GoToThisActivity.class),因为对于java,GoToThisActivity.class是可序列化的!谢谢。对不起,我刚才错误地跳过了那个部分,但请看我通过一门课程的更新。我会试试的,雷卡泽鲁大师!最后一个rekaszeru老师,如何反序列化这个,到目前为止没有运气:intent.putExtra(“buttonPicks”,new ButtonPick[]{ButtonPick.DELETE,ButtonPick.EDIT})//其中ButtonPick是一个枚举。我需要为此创建一个自定义对象吗?我发布了一个新的更新,其中包含一个关于如何反序列化数组的示例,我希望它对您有用。
if (intent.hasExtra("buttonPicks"))
{
final Object[] buttonPicks= (Object[])intent.
getSerializableExtra("buttonPicks");
[...]
}