Cannot deserialize FormDef

Hello everyone!

I am having problems while deserializing previously saved FormDef objects.

Here is the async task that I am using for saving them:

class WriteCacheAsync : AsyncTask<Void, Void, Boolean>() {

    companion object {
        private val TAG =

    override fun doInBackground(vararg params: Void?): Boolean {
        val formFile =
           File(Environment.getExternalStorageDirectory(), "sagacollect/collect.formdef")
        try {
            val dos = DataOutputStream(FileOutputStream(formFile))
        } catch (exception: IOException) {
            Log.e(TAG, exception.toString())
        return true

And that is how I am trying to recover the FormDef after restarting the application.

class ReadCacheAsync(private val readCacheListener: ReadCacheListener) : AsyncTask<Void, Void, FormDef?>() {

    override fun doInBackground(vararg params: Void?): FormDef? {
        val testFile = File(
        if (testFile.exists()) {
            val deserializedFormDef = deserializeFormDef(testFile)
            if (deserializedFormDef != null) {
                return deserializedFormDef
        return null

    override fun onPostExecute(result: FormDef?) {

    private fun deserializeFormDef(serializedFormDef: File): FormDef? {
        var fd: FormDef?
        try {
            fd = FormDef()
            val fis = FileInputStream(serializedFormDef)
            val dis = DataInputStream(fis)
            fd.readExternal(dis, ExtUtil.defaultPrototypes())
        } catch (e: Exception) {
            fd = null
        return fd

Currently, I am getting a DeserializationException in the line that does writeExternal(dos), with the message "No datatype registered to serialization code". So the result is always null and I cannot recover the state of an unfinished Form.

Any idea of what can I do in order to fix this? Otherwise, any idea of how to recover the state of a form after restarting the application?

Mauricio Güell