This is my Interface class
interface InstallerInterface {
fun onInstallation(context: Context)
}
I implements the interface in this class
class FirstActivity : InstallerInterface{
override fun onInstallation(context: Context) {
*MyCode*
}
}
I have tried to pass this context using intent to
val intent=Intent(context,SecondActivity::class.java)
intent.putExtra("NAME",name)
intent.putExtra("Callback",Interface)
context.startActivity(intent)
But intent.putExtra was causing error Cannot resolve method 'putExtra()
. So I implements Serializable
in FirstActivity()
class. But that was causing error
06-11 12:28:57.323 4042 4042 E AndroidRuntime: java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = FirstAcitvity)
06-11 12:28:57.323 4042 4042 E AndroidRuntime: at android.os.Parcel.writeSerializable(Parcel.java:1535)
06-11 12:28:57.323 4042 4042 E AndroidRuntime: at android.os.Parcel.writeValue(Parcel.java:1483)
06-11 12:28:57.323 4042 4042 E AndroidRuntime: at android.os.Parcel.writeArrayMapInternal(Parcel.java:732)
06-11 12:28:57.323 4042 4042 E AndroidRuntime: at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1417)
06-11 12:28:57.323 4042 4042 E AndroidRuntime: at android.os.Bundle.writeToParcel(Bundle.java:1157)
06-11 12:28:57.323 4042 4042 E AndroidRuntime: at android.os.Parcel.writeBundle(Parcel.java:772)
06-11 12:28:57.323 4042 4042 E AndroidRuntime: at android.content.Intent.writeToParcel(Intent.java:8703)
06-11 12:28:57.323 4042 4042 E AndroidRuntime: at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:3082)
06-11 12:28:57.323 4042 4042 E AndroidRuntime: at android.app.Instrumentation.execStartActivity(Instrumentation.java:1520)
06-11 12:28:57.323 4042 4042 E AndroidRuntime: at android.app.Activity.startActivityForResult(Activity.java:4229)
06-11 12:28:57.323 4042 4042 E AndroidRuntime: at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:676)
06-11 12:28:57.323 4042 4042 E AndroidRuntime: at android.app.Activity.startActivityForResult(Activity.java:4187)
06-11 12:28:57.323 4042 4042 E AndroidRuntime: at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:663)
06-11 12:28:57.323 4042 4042 E AndroidRuntime: at android.app.Activity.startActivity(Activity.java:4526)
06-11 12:28:57.323 4042 4042 E AndroidRuntime: at android.app.Activity.startActivity(Activity.java:4494)
06-11 12:28:57.323 4042 4042 E AndroidRuntime: at foundation.e.apps.XAPK.LaunchUtils.startInstallSplitApksActivity(LaunchUtils.kt:15)
06-11 12:28:57.323 4042 4042 E AndroidRuntime: at foundation.e.apps.XAPK.ViewUtils$installXApk$1.onCompedApks(ViewUtils.kt:57)
06-11 12:28:57.323 4042 4042 E AndroidRuntime: at foundation.e.apps.XAPK.XApkInstallUtils$installSplitApks$2.run(XApkInstallUtils.kt:191)
06-11 12:28:57.323 4042 4042 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:751)
06-11 12:28:57.323 4042 4042 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:95)
06-11 12:28:57.323 4042 4042 E AndroidRuntime: at android.os.Looper.loop(Looper.java:154)
06-11 12:28:57.323 4042 4042 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:6186)
06-11 12:28:57.323 4042 4042 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
06-11 12:28:57.323 4042 4042 E AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
06-11 12:28:57.323 4042 4042 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
06-11 12:28:57.323 4042 4042 E AndroidRuntime: Caused by: java.io.NotSerializableException: ThirdAcivity()
06-11 12:28:57.323 4042 4042 E AndroidRuntime: at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1224)
06-11 12:28:57.323 4042 4042 E AndroidRuntime: at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1584)
06-11 12:28:57.323 4042 4042 E AndroidRuntime: at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1549)
06-11 12:28:57.323 4042 4042 E AndroidRuntime: at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1472)
06-11 12:28:57.323 4042 4042 E AndroidRuntime: at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1218)
06-11 12:28:57.323 4042 4042 E AndroidRuntime: at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346)
06-11 12:28:57.323 4042 4042 E AndroidRuntime: at android.os.Parcel.writeSerializable(Parcel.java:1530)
06-11 12:28:57.323 4042
I believe ThirdActivity()
implements the FirstActivity()
and I was not implementing Serializable
in ThirdAcivity
. So I implement Serializable
in ThirdAcitivity
. And I was getting error on every Activity which uses FirstAcivity
. This is a large project and I can't implement Serializable
on every Acitivity.
So I implement Parcelable
instead. My code is
@Parcelize
class FirstActivity : InstallerInterface, Parcelable{
override fun onInstallation(context: Context) {
*MyCode*
}
}
And I was getting error like java.lang.RuntimeException: Parcel: unable to marshal value
How can I fix this code. If not, What could be better alternative. Thank you in advance