1
我试图序列化一个摘要并将其传递给一个活动,但我得到错误java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = com.example.MainActivity$1)
。序列化抽象类的问题
MainActivity.java
public class MainActivity extends Activity {
private static final String AUTO_EXTRA = "AUTO_EXTRA";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
RelativeLayout l = new RelativeLayout(this);
l.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
new Setup.auto(this) {
@Override
public void onFailure(String message) {
}
};
}
}
Setup.java
public static class Setup {
public static abstract class auto implements FailedAuto, Serializable {
public auto(Activity activity) {
auto a = (auto) this;
Intent i = new Intent(activity, AutoSetup.class);
i.putExtra(AUTO_EXTRA, a); // Error happens here.
activity.startActivity(i);
}
}
private class AutoSetup extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
((auto) getIntent().getSerializableExtra(AUTO_EXTRA)).onFailure("Message");
}
}
private interface FailedAuto {
void onFailure(String message);
}
}
我有两个班,MainActivity和设置,当我运行代码,我得到的线i.putExtra(AUTO_EXTRA, a);
错误。我发现序列化MainActivity解决了这个问题,但我不想MainActivity是Serializable
,我不明白为什么它认为我在序列化MainActivity。我在这里做错了什么?
你能解释一下我的基类的子类是什么意思吗?我不清楚你的意思。 –
我的意思是你的抽象类。创建另一个新类,如下所示: public class AutoImpl extends auto { // implementation } –