Вы можете попробовать так, это работает для меня:
public delegate void MyEventHaldler(object sender, EventArgs e);
public class B
{
public virtual event MyEventHaldler MyEvent;
protected override void OnChanged(EventArgs e)
{
if (MyEvent != null)
MyEvent(this, e);
}
}
public class D : B
{
public override event MyEventHaldler MyEvent;
protected override void OnChanged(EventArgs e)
{
if (MyEvent != null)
MyEvent(this, e);
}
}
Использование реализации интерфейса интерфейса + метод намерения, предоставленный Олегом, является хорошим способом сделать это.
И еще один способ - использовать шаблон проектирования Singleton и хранить общие данные в этом объекте Singleton.
Ваш пользовательский класс должен реализовывать интерфейс Parcelable. Типичная реализация Parcelable:
public class MyParcelable implements Parcelable {
private int mData;
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
out.writeInt(mData);
}
public static final Parcelable.Creator<MyParcelable> CREATOR
= new Parcelable.Creator<MyParcelable>() {
public MyParcelable createFromParcel(Parcel in) {
return new MyParcelable(in);
}
public MyParcelable[] newArray(int size) {
return new MyParcelable[size];
}
};
private MyParcelable(Parcel in) {
mData = in.readInt();
}
}
И затем вы можете отправить свои данные, используя что-то вроде этого:
Intent intent;
intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putParcelableArrayListExtra("Workout", workout);
startActivity(intent);
И получить:
workout = getIntent().getParcelableArrayListExtra("Workout");
Примечание : Убедитесь, что каждый вложенный класс вашего основного пользовательского класса имеет реализованный интерфейс Serializable