2016-11-23 65 views
0

我遇到问题,我在工具栏上使用图标搜索,我想点击这个图标搜索,它会移动到新的活动并在此处展开​​editview搜索,但是我的代码可以不achive如何在点击图标搜索时进行其他活动

我班(第一项活动):

@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"/> 

但这并没有移动到第二个活动,它似乎仍然achive在第一个活动

如何当我点击ico时,我可以归功于第二项活动在工具栏上搜索?

感谢

+0

请检查您的菜单文件名与充气的菜单文件。 –

回答

2

我创建了一个测试项目从什么你说你要点击搜索图标上的第一个活动,然后打开第二个活动,做搜索有

删除添加的代码 这条线从layout_activity的伎俩:

app:actionViewClass="android.support.v7.widget.SearchView" 

当您添加该行的项目将表现为一个搜索查看,而不是甚至

回应
public boolean onOptionsItemSelected(MenuItem item) 
+0

它改变了我的工作:app:actionViewClass =“android.support.v7.widget.SearchView”,非常感谢! –

+0

太棒了,乐意帮忙;) –

0

一个解决方案是在同一活动中完成。

设置监听输入查询文本

searchView.setOnQueryTextListener(MyActivity.this); 

和实施MyActivity这个接口SearchView.OnQueryTextListener

该接口提供了2种回调方法:

@Override 
public boolean onQueryTextSubmit(String query) { 
//get this query and search on server 
} 
@Override 
public boolean onQueryTextChange(String newText) { 
    return false; 
} 

希望这有助于你。

+0

谢谢,我懂了 –