1

我正在创建一个富文本编辑器,所以我有一个扩展的 EditText,它接收一个带有子组件的 ViewGroup。这个 ViewGroup 是一个工具栏,带有用于粗体等的切换按钮。

EditText 以这种方式接收工具栏:

private ViewGroup toolbar;

public CustomEditText(Context context, LinearLayout newToolbar) {
    super(context);
    toolbar = newToolbar;
}

使用此代码,CustomEditText 成功控制了工具栏的可见性:

@Override
protected void onFocusChanged(boolean focused, int direction,
        Rect previouslyFocusedRect) {       
    super.onFocusChanged(focused, direction, previouslyFocusedRect);

    if (focused)
        toolbar.setVisibility(View.VISIBLE);
    else
        toolbar.setVisibility(View.GONE);
}

但不幸的是,例如,这会返回NullPointerException

@Override
protected void onTextChanged(CharSequence text, int start,
        int lengthBefore, int lengthAfter) {
    super.onTextChanged(text, start, lengthBefore, lengthAfter);    

    toolbar.setVisibility(View.GONE);
}

我知道在当前活动中向我的 CustomEditText 添加一个 TextWatcher 可以解决,但我试图让 CustomEditText 处理与之相关的所有内容。

你知道为什么一切都适用于onFocusChanged,但不适用于onTextChanged吗?

4

0 回答 0