Kam*_*mil 22 android android-actionbar searchview
我在输入值后尝试清除并关闭SearchView.我找到了一个解决方案,但它会关闭搜索,如果我再次尝试搜索,则不会执行任何操作.
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main_actions, menu);
searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
searchView.setOnQueryTextListener(searchListener);
return super.onCreateOptionsMenu(menu);
}
SearchView.OnQueryTextListener searchListener = new SearchView.OnQueryTextListener(){
@Override
public boolean onQueryTextChange(String arg0) {
return false;
}
@Override
public boolean onQueryTextSubmit(String query) {
new JsoupGetData("http://api.openweathermap.org/data/2.5/find?q="+ query + "&lang=pl").execute();
try {
searchView.onActionViewCollapsed();
}
catch(Exception ex){
ex.printStackTrace();
System.out.println(ex);
}
return true;
}
};
Run Code Online (Sandbox Code Playgroud)
我只能第一次搜索.每次下次它只关闭我的输入键盘而什么都不做.如何以正确的方式执行?
编辑.建议的更改如下所示:
try {
searchView.setIconified(true);
}
Run Code Online (Sandbox Code Playgroud)
activity_main_actions.xml:
<!-- Search Widget -->
<item android:id="@+id/action_search"
android:icon="@drawable/ic_action_search"
android:title="@string/action_search"
android:showAsAction="always"
android:actionViewClass="android.widget.SearchView"/>
Run Code Online (Sandbox Code Playgroud)
EDIT2:
showAsAction="always|collapseActionView"当我点击搜索时,我改变但它关闭了我的应用程序.
我还将监听器放在OnCreateOptionsMenu中以查看它是否会改变任何内容:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main_actions, menu);
searchMenuItem = menu.findItem(R.id.action_search);
searchView = (SearchView) searchMenuItem.getActionView();
searchView.setOnQueryTextListener(new OnQueryTextListener(){
@Override
public boolean onQueryTextChange(String arg0) {
return false;
}
@Override
public boolean onQueryTextSubmit(String query) {
if (searchMenuItem != null) {
boolean closed = searchMenuItem.collapseActionView();
Toast.makeText(getApplicationContext(), "closing: " + closed, Toast.LENGTH_SHORT).show();
}
new JsoupGetData("http://api.openweathermap.org/data/2.5/find?q="+ query + "&lang=pl").execute();
return false;
}
});
return super.onCreateOptionsMenu(menu);
}
Run Code Online (Sandbox Code Playgroud)
而closed布尔是false-我不知道为什么.我阅读了文档,但它没有告诉我什么.
EDIT3:
我在这个问题上读了太多的互联网,但我还不清楚.清除搜索小部件,隐藏键盘并执行操作.唯一的问题是搜索没有折叠,所以它覆盖了ActionBar上的其余操作按钮.
@Override
public boolean onQueryTextSubmit(String query) {
searchView.setIconified(true);
searchView.clearFocus();
new JsoupGetData("http://api.openweathermap.org/data/2.5/find?q="+ query + "&lang=pl").execute();
return false;
}
Run Code Online (Sandbox Code Playgroud)
在这里我读到collapseActionView()不起作用,因为我的搜索不是视图而是窗口小部件.
New*_*ava 45
使用:
searchMenuItem.collapseActionView();
代替:
searchView.onActionViewCollapsed();
如果您正在使用AppCompat library,请使用:
MenuItemCompat.collapseActionView(searchMenuItem);
| 归档时间: |
|
| 查看次数: |
25585 次 |
| 最近记录: |