单击图标搜索时如何进行其他活动

时间:2016-11-23 09:40:44

标签: android toolbar

我有问题,我在工具栏上使用图标搜索,我想点击此图标搜索,它将移动到新活动并在此处展开​​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"/>

它没有进入第二项活动,在第一项活动中似乎仍然存在

如果在工具栏上点击图标搜索时,如何移动到第二个活动?

由于

2 个答案:

答案 0 :(得分:2)

我创建了一个测试项目并添加了您的代码 根据你所说的你想点击第一个活动的搜索图标然后打开第二个活动并在那里进行搜索

从layout_activity中删除此行可以解决问题:

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

当您添加该行时,您的项目将表现为SearchView,甚至不响应

public boolean onOptionsItemSelected(MenuItem item)

答案 1 :(得分: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;
}

希望这会对你有所帮助。