我的edittext作为操作栏中的操作项(实际上是ActionBarSherlock)。布局是在自己的xml中,一切正常,我可以访问edittext的内容并毫不费力地进行更改。
我想在此edittext上添加更改侦听器。加载onCreateOptionsMenu(菜单菜单)并填写菜单后,我创建了我的
EditText search=(EditText) findViewById(R.id.searchbar); // its name in a frame layout
然后
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) {
}
});
我一直在这个edittext上获得空指针异常。问题可能是令人眼花缭乱的事情,但这让我很麻烦。
谢谢!
答案 0 :(得分:6)
操作栏不在内容视图中,因此对findViewById
的调用将始终返回null
。
相反,您需要调用menu.findItem(R.id.your_menu_item).getActionView()
来获取对操作视图的引用。使用该视图,您可以致电findViewById
以获取对EditText
的引用(或者如果EditText
是根视图,那么您已经拥有该引用)。
答案 1 :(得分:0)
两个想法,都没有保证 -
你检查过:
EditText search=(EditText) findViewById(R.id.searchbar);
返回非null?如果它返回null:
或者,你是否意外地在两者之间进行搜索(例如重新宣布它)?