I have some Activity code that goes like this:
void onCreate(Bundle b) {
super.onCreate(b);
setContentView(...);
EditText et = (EditText) findViewById(...);
et.setEditableFactory(new Editable.Factory() {
@Override public Editable newEditable(CharSequence source) {
return (Editable) source;
}
});
et.setText(new MySpannableStringBuilderSubclass("foo"), TextView.BufferType.EDITABLE);
}
Essentially, I want to have the backing text for an EditText be a custom class I created, MySpannableStringBuilderSubclass. The call to setEditableFactory ensures that setText doesn't copy the contents of my subclass into a SpannableStringBuilder.
Everything above works fine provided the phone doesn't change screen orientation; getText().getClass().getSimpleName() returns MySpannableStringBuilderSubclass as it should. However, if I change the phone's orientation to landscape, the activity is destroyed/re-created. When I call findViewById, the returned EditText already has the text "foo", but getText().getClass().getSimpleName() is SpannableStringBuilder, implying it copied it off my subclass.
How can I prevent this from happening? Thanks.