2017-05-04 22 views
0

私は自分のapp.butにsearchviewを追加したいだけです。ユーザーが入力したクエリを探したいだけのものは探したくありません。 これまで私はこのコードを試しましたが、私は私のアプリケーションを実行するとクラッシュします。Android-SearchView in Toolbar

更新: 私のアプリがクラッシュしても、これを試しましたが、

main_menu.xmlコード

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto"> 
<item 
    android:id="@+id/search" 
    android:title="Search" 
    android:icon="@android:drawable/ic_menu_search" 
    app:actionViewClass="android.support.v7.widget.SerachView" 
    app:showAsAction="always" 
/> 

MainActivity.javaが

public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater=getMenuInflater(); 
    inflater.inflate(R.menu.main_menu,menu); 
    SearchView searchView=(SearchView)findViewById(R.id.search); 
    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
     @Override 
     public boolean onQueryTextSubmit(String query) { 
     // Toast.makeText(this,query,Toast.LENGTH_LONG).show(); 
      return false; 
     } 

     @Override 
     public boolean onQueryTextChange(String newText) { 
      return false; 
     } 
    }); 
    return super.onCreateOptionsMenu(menu); 
} 

誰もがこの問題を解決するために私を助けることができますしてください。 ありがとうございます。

+0

デバッガ –

+0

を使用するための時間がなぜあなたは代わりにメニュー項目として追加の直接SearchViewを作成したのですか? –

+0

あなたは 'SearchView'を直接使用するのではなく、android.please –

答えて

1

あなたmenu.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> 

に、直接SearchViewを使用して、Javaへのこの簡単なコードを追加していないことができます:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.action_search: 
      // Not implemented here 
      return false; 
     default: 
      break; 
    } 
    searchView.setOnQueryTextListener(queryTextListener); 
    return super.onOptionsItemSelected(item); 
} 
0

をMain_Menu.xml

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 
    <item 
     android:id="@+id/action_search" 
     app:actionViewClass="android.support.v7.widget.SearchView" 
     app:showAsAction="always|collapseActionView" 
     android:icon="@android:drawable/ic_menu_search" 
     android:title="Search" /> 
</menu> 

onCreateOptionMenu方法

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.search_view_menu_item, menu); 
    MenuItem searchViewItem = menu.findItem(R.id.action_search); 
    final SearchView searchViewAndroidActionBar = (SearchView) MenuItemCompat.getActionView(searchViewItem); 
    searchViewAndroidActionBar.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
     @Override 
     public boolean onQueryTextSubmit(String query) { 
      searchViewAndroidActionBar.clearFocus(); 
      return true; 
     } 

     @Override 
     public boolean onQueryTextChange(String newText) { 
      return false; 
     } 
    }); 
    return super.onCreateOptionsMenu(menu); 
}