我正在尝试从deDittext(扩展textView(覆盖getText((方法。我需要对谁在调用我的自定义方法进行一些检查,如果通过所有检查,请调用" Original" Edittext.getText((。
这个问题源于以下事实:我的自定义方法被多次调用,直到oom错误被抛向我,请注意,我的自定义方法尚未从无处拨打。
这是代码:(上述检查不在这里,我刚刚粘贴了Orignal 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);
}
}
我希望不阅读多个"应该打印一旦打印出...
deDittext从其构造函数中的call getText((方法从TextView类和TextView类延伸。每当您创建自定义窗口小部件的任何实例(即文本视图的直接/间接子类(时,就会发生这种情况,我想这就是原因,即使在项目代码中没有任何地方调用它,您的自定义视图的getText((也会被调用。
如果要执行一些检查,然后调用Original GetText((方法,以从中获取值,请不要覆盖自定义类中的方法。在您的自定义类中有一个普通方法,该方法具有这些检查,然后根据这些支票调用原始方法(以获取值(,然后您可以从普通方法返回值。