如何修复 EditText 的 getText 方法的重写



我正在尝试从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((方法,以从中获取值,请不要覆盖自定义类中的方法。在您的自定义类中有一个普通方法,该方法具有这些检查,然后根据这些支票调用原始方法(以获取值(,然后您可以从普通方法返回值。

最新更新