-2

追加されたテキストウォッチャーを初期化しましたが、まだこの例外が発生しています。私は何かを忘れていますか?
どんな助けでも大歓迎です。

    EditText editText = (EditText) dialogList.findViewById(R.id.search);
editText.addTextChangedListener(mSearchTw);

mSearchTw = new TextWatcher() {

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {

    }
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count,int after) {
        pokeAdapter.getFilter().filter(s);
    }

    @Override
    public void afterTextChanged(Editable s) {
    }
};
4

3 に答える 3

1

適切に開始されていない、

editText.getText().toString() を使用して確認できます。エラーが発生した場合は、適切に開始されていないことを意味します

于 2016-08-13T14:59:29.867 に答える
1

もちろん、Null Pointer が表示されます。基本的にはnull、次の行にオブジェクトを追加します。

editText.addTextChangedListener(mSearchTw);

初期化する前に追加します。

修正するには、開始後、つまり後に移動するだけですmSearchTw = new TextWatcher() {...};

これは、これらのステートメントが順次実行されるためです。

于 2016-08-13T15:07:26.577 に答える
1

@ user8 が答えを出すので、クラスの null オブジェクトを渡すことができます。このように変更するだけです

EditText editText = (EditText)findViewById(R.id.editText);
        TextWatcher mSearchTw  = new TextWatcher() {

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

            }
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count,int after) {
                pokeAdapter.getFilter().filter(s);
            }

            @Override
            public void afterTextChanged(Editable s) {
            }
        };

        editText.addTextChangedListener(mSearchTw);
于 2016-08-13T15:12:49.087 に答える