Я пытаюсь переопределить метод getText () из EditText (который расширяет TextView).
Мне нужно сделать несколько проверок того, кто вызывает мой пользовательский метод, и если все проверки пройдены, вызовите «оригинальный» EditText.getText ().
Проблема заключается в том, что мой пользовательский метод вызывается несколько раз, пока мне не выдаётся ошибка OOM, обратите внимание, что мой пользовательский метод еще не был вызван из ниоткуда.
Это код: (вышеупомянутых проверок здесь нет, я просто вставил оригинальную реализацию EditText.getText в качестве замены, но проблема все еще присутствует)
public class CustomEdit extends EditText {
public CustomEdit(Context context) {
this(context, null);
}
public CustomEdit(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomEdit(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
public Editable getText() {
System.out.println("Should be printed once called...");
CharSequence text = super.getText();
if (text == null) {
return null;
}
if (text instanceof Editable) {
return (Editable) super.getText();
}
super.setText(text, BufferType.EDITABLE);
return (Editable) super.getText();
}
}
Это моя основная активность:
public class MainActivity extends AppCompatActivity {
CustomEdit s;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
s = findViewById(R.id.newEditText);
}
}
Я ожидаю, что не буду читать несколько «Должно быть напечатано после вызова ...» во время выполнения, в этот момент я должен ожидать, что не увижу ни одного его экземпляра, так как метод еще не был вызван.