B4X:
editorlayer.Tag = B4XFloatTextField1
Log(editorlayer.Tag.As(String).length) 'In my app this displays 89329
I assume you start in the designer by placing names of views in their tags.
Then you want to read all the views you have created and replace the string name in the tag with a map, so that you can also put other things in the tag.
I have done something similar.
The loop in your Sub is recursive, so that not just the views you created but all views in all complex custom views too,
some will have a reference to the custom view itself. This is not what you want.
Filter the loop using GetType(vw.tag).Contains("String"), it will tell you if the tag is a string or not (Don't use "Is" for this).
I believe you have replaced a critical reference to a custom view class instance with a map.
To know more, one would have to fully understand how each custom view is implemented.
Others may have a better answer.