У меня есть действие, которое наследует интерфейс, скажем CommonListener
, я передаю этот экземпляр интерфейса с помощью ключевого слова this
другому классу, и этот класс сериализует полученный экземпляр, так как Activity отправляет свой экземпляр, я получаю cra sh когда я пытаюсь отправить экземпляр
например:
class MyActivity : AppCompatActivity(), CommonListener {
override fun onCreate(savedInstanceState: Bundle?) {
MyClass(this, this).start()
}
}
class MyClass(private val listener: CommonListener,
private val context:Context){
fun start(){
val intent = Intent(context, AnotherClass.class)
intent.putSerializable("MyKey", listener)
context.startActivity(intent)
}
}
interface CommonListener:Serializable {
}
Cra sh log
java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = com.package.MyActivity)
at android.os.Parcel.writeSerializable(Parcel.java:1833)
at android.os.Parcel.writeParcelable(Parcel.java:1801)
at android.os.Parcel.writeValue(Parcel.java:1707)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:928)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1584)
at android.os.Bundle.writeToParcel(Bundle.java:1253)
at android.os.Parcel.writeBundle(Parcel.java:997)
at android.content.Intent.writeToParcel(Intent.java:10495)
at android.app.IActivityTaskManager$Stub$Proxy.startActivity(IActivityTaskManager.java:3823)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1705)
at android.app.Activity.startActivityForResult(Activity.java:5192)
at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:676)
at android.app.Activity.startActivityForResult(Activity.java:5150)
at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:663)
Пожалуйста, дайте мне знать, если существует какое-либо решение для этой проблемы
Примечание: если я передам экземпляр интерфейса как анонимный, он будет работать.