1

リッチ テキスト エディタを作成しているので、子コンポーネントを持つ ViewGroup を受け取る拡張 EditText があります。この 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