【发布时间】:2013-12-17 19:37:49
【问题描述】:
我想扩展 SearchView 类以覆盖 onKeyDown() 方法。所以我在我的片段类中这样做如下:
public class myfragment extends ListFragment{
...
class CustomSearchView extends SearchView{
public CustomSearchView(Context context) {
super(context);
}
public CustomSearchView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event){
Toast.makeText(getActivity(), "onkeydown", Toast.LENGTH_SHORT).show();
return super.onKeyDown(keyCode, event);
}
}
...
}
现在我想在片段中使用这个扩展的 SearchView。但我不知道该怎么做。由于我使用 searchItem.getActionView() 创建了 SearchView 对象,有什么方法可以将其转换为 CustomSearchView 对象,以便在我的片段中触发覆盖的 onKeyDown 方法?
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
...
// Retrieves the system search manager service
final SearchManager searchManager =
(SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE);
// Retrieves the SearchView from the search menu item
final SearchView searchView = (SearchView) searchItem.getActionView();
// Assign searchable info to SearchView
searchView.setSearchableInfo(
searchManager.getSearchableInfo(getActivity().getComponentName()));
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String queryText) {
// Nothing needs to happen when the user submits the search string
return true;
}
@Override
public boolean onQueryTextChange(String newText) {
...
}
});
这个问题是因为How can I get onBackPressed() while SearchView is activated?提到的解决方案弹出来的
【问题讨论】:
标签: android