我有问题,我在工具栏上使用图标搜索,我想单击此图标搜索,它将移至新活动并在此处扩展EditView搜索,但是我的代码无法实现
我的类(第一个活动):
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main_menu_icon_toolbar, menu);
// Retrieve the SearchView and plug it into SearchManager
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
if(item.getItemId()==R.id.action_search){
Intent i = new Intent(this,SearchCarActivity.class);
startActivity(i);
return true;
}
return super.onOptionsItemSelected(item);
}
我的layout_activity:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<!-- NavigationDrawer Menu -->
<item android:id="@+id/action_search"
android:title="Search"
app:showAsAction="always"
android:icon="@drawable/ic_action_name_search"
app:actionViewClass="android.support.v7.widget.SearchView"
/>
</menu>
我的搜索活动(第二个活动):
public class SearchCarActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_result);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.search_car_menu, menu);
SearchView searchView =
(SearchView) menu.findItem(R.id.search).getActionView();
searchView.setIconified(false);
return super.onCreateOptionsMenu(menu);
}
}
我的search_car_menu.xml:
<?xml version="1.0" encoding="utf-8"?>
<item
android:id="@+id/search"
android:icon="@android:drawable/ic_menu_search"
android:title="Search"
app:showAsAction="always"
app:actionViewClass="android.support.v7.widget.SearchView"/>
它不会转移到第二个活动,在第一次活动中似乎仍然成就
单击工具栏上的图标搜索时,我如何实现第二个活动?
谢谢
我创建了一个测试项目一个添加了您的代码根据您所说的内容,您想单击第一个活动的搜索图标,然后打开第二个活动,然后在此处进行搜索
从您的layout_activity中删除这条线做到了一个技巧:
app:actionViewClass="android.support.v7.widget.SearchView"
当您添加该行时,您的项目将以搜索视图的形式行为,甚至不响应
public boolean onOptionsItemSelected(MenuItem item)
一种解决方案是在同一活动中进行。
设置输入查询文本的侦听器
searchView.setOnQueryTextListener(MyActivity.this);
和此接口SearchView.OnQueryTextListener
MyActivity
此接口提供2种回调方法:
@Override
public boolean onQueryTextSubmit(String query) {
//get this query and search on server
}
@Override
public boolean onQueryTextChange(String newText) {
return false;
}
希望这对您有帮助。