抽象化をシリアル化してアクティビティに渡そうとしていますが、エラー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);
}
}
私は、コードを実行したとき、私はラインi.putExtra(AUTO_EXTRA, a);
上のエラーを取得し、二つのクラス、MainActivityとセットアップを持っています。私は、MainActivityをシリアライズするとこの問題は解決することが分かりましたが、MainActivityをSerializable
にすることは望ましくありません。なぜMainActivityをシリアル化しているのか分かりません。私はここで間違って何をしていますか?
私の基本クラスのサブクラスが意味することを説明できますか、私はあなたが意味することについてはっきりしていません。 –
私はあなたの抽象クラスを意味しました。 public class AutoImplは自動{ //実装 }を拡張します。 –