android ActionBar中的EditText上的addTextChangedListener()

Whi*_*all 4 android nullpointerexception android-edittext actionbarsherlock android-actionbar

我的edittext作为操作栏中的操作项(实际上是ActionBarSherlock).布局是在自己的xml中,一切正常,我可以访问edittext的内容并毫不费力地更改.

我想在这个edittext上添加一个更改监听器.加载onCreateOptionsMenu(菜单菜单)并填写菜单后我创建了我的

EditText search=(EditText) findViewById(R.id.searchbar); // its name in a frame layout
Run Code Online (Sandbox Code Playgroud)

然后

search.addTextChangedListener(new TextWatcher(){

    @Override
    public void afterTextChanged(Editable s) {

    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before,
            int count) {
    }
});
Run Code Online (Sandbox Code Playgroud)

我一直在这个edittext上得到空指针异常.问题可能是令人眼花缭乱的事情,但这让我很麻烦..

谢谢!

Jak*_*ton 6

操作栏不在内容视图中,因此findViewById将始终返回调用null.

相反,您需要调用menu.findItem(R.id.your_menu_item).getActionView()以获取对操作视图的引用.使用该视图,您可以调用findViewById以获取对EditText(或者如果EditText是根视图,那么您已经有参考)的引用.