-2

它给了我空指针异常,我已经初始化了添加的 textwatcher,但我仍然有这个异常。我是不是忘记了什么。
任何帮助表示赞赏。

    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

正如@user8 给出的答案,您可以传递类的空对象。您只需像这样更改

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 回答
1

当然,它会给你Null Pointer,你基本上null在下面一行添加一个对象

editText.addTextChangedListener(mSearchTw);

在初始化之前添加它。

要修复,只需在启动后移动它,即在mSearchTw = new TextWatcher() {...};

那是因为这些语句是按顺序执行的。

于 2016-08-13T15:07:26.577 回答