android - 从片段中的 searchview 小部件获取文本
问题描述
我正在开发一个具有导航抽屉、MainActivity 和六个片段的 Android 应用程序。每个导航抽屉项打开一个不同的片段。在 MainActivity 上,我包含了一个 searchview 小部件以将其用作搜索框:
主要活动:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
// Retrieve the SearchView and plug it into SearchManager
final SearchView searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.action_search));
SearchManager searchManager = (SearchManager) getSystemService(SEARCH_SERVICE);
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
return true;
}
菜单.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".HomeActivity">
<item
android:id="@+id/action_search"
android:icon="@android:drawable/ic_menu_search"
android:title="Search"
app:actionViewClass="android.support.v7.widget.SearchView"
app:showAsAction="always" />
</menu>
首页片段
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
// Do something that differs the Activity's menu here
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_search:
Log.d("SEARCH", "pulsado search" );
return false;
default:
break;
}
return false;
}
它现在正在工作,我的意思是,当单击搜索图标时,会显示一个编辑文本。我怎样才能让插入到这个edittext中的文本使用它?
解决方案
我认为你在看下面的代码
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
return false;
}
});
最佳方法。
请使用片段的接口机制。基于显示给用户的当前片段调用回调方法来通知片段搜索文本已更改。 示例链接
简单的方法。
为所有片段提供一个公共方法。基于显示给用户的当前片段调用方法通知片段搜索文本已更改。
最坏的方法。
在所有片段中使用“getActivity”,然后使用“findViewById”,并使用“setOnQueryTextListener”。确保您有适当的参考。
推荐阅读
- sql - SWJOBENGINEWORKER2.EXE - 我的 SQL 服务器出了什么问题?
- javascript - 组件未正确呈现
- sql - 执行查询时出现 Oracle 错误 -ORA-00933:SQL 命令未正确结束
- r - 从两个数据集中选择特定数字的值
- android - 方法引发了“java.lang.NullPointerException”异常。无法评估 java.time.LocalDateTime.toString()
- arrays - Swift Array - “Int.random(in: 0...25)”和“randomElement()”之间的区别
- joomla - 如何将通知推送到 Joomla 插件
- python - 如何在函数参数中解压缩树状结构(如 js 对象或 json)?
- wso2 - 访问 WSO2 产品的 H2 嵌入式数据库
- pyqt5 - 类之间的 PyQt5 信号导致锁定