0

내 앱에 searchview가 있습니다. 검색 상자에 입력 할 수 있지만 검색을 누르면 앱이 다운됩니다. 그것은 그러나ClassCastException ActionBarSherlock을 사용하는 SearchView

11-25 00:57:09.446: E/AndroidRuntime(1914): java.lang.ClassCastException: com.actionbarsherlock.widget.SearchView cannot be cast to android.widget.SearchView

, 내가 내 메뉴 파일에 선언하는 것은 정확했다. 여기

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:id="@+id/search" 
     android:title="Quezon City Guide" 
     android:icon="@drawable/ic_action_search" 
     android:showAsAction="collapseActionView|ifRoom" 
    android:actionViewClass="com.actionbarsherlock.widget.SearchView" /> 
</menu> 

내가 그것을

public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getSupportMenuInflater(); 
    inflater.inflate(R.menu.options_menu, (Menu) menu); 


    SearchManager searchManager = 
      (SearchManager) getSystemService(Context.SEARCH_SERVICE); 
    SearchView searchView = 
      (SearchView) menu.findItem(R.id.search).getActionView(); 
    searchView.setSearchableInfo(
      searchManager.getSearchableInfo(getComponentName())); 



    return super.onCreateOptionsMenu(menu); 

} 


public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.search: 

      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

내가 잘못 뭘하는지 모르는 전화 드렸습니다 방법입니다. 여기

import android.app.SearchManager; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Build; 
import android.os.Bundle; 
import com.actionbarsherlock.view.Menu; 
import com.actionbarsherlock.view.MenuInflater; 
import com.actionbarsherlock.view.MenuItem; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.ImageButton; 
import android.widget.Toast; 
import com.actionbarsherlock.widget.SearchView; 
import com.actionbarsherlock.app.SherlockActivity; 

수 누군가가 도움을 호소 내 수입이다. 감사!

+0

프로젝트를 실행하기 전에 깨끗이 해보십시오. 그게 항상 내게 도움이 – Anirudh

+0

그 자체가 실수 였는지 보여줍니다 ... –

+0

@Miguel,'onOptionsItemSelected()'에 구현되어 있습니까? – Geros

답변

0

SearchViewAction Bar SherlockSearchView에 매핑하는 것과 같습니다. 그게 전부 네 잘못이야! OnCreateOptionMenu에

+0

무엇을 의미합니까? 미안하지만 여전히 초보자입니다. – Jeongbebs

+0

설명하기가 조금 어렵지만 시도하겠습니다. 오류로 인해 검색 위젯 패키지 이름이 명확하게 표시됩니다. 안드로이드의 기본 검색 위젯에 액션 바 sherlock을위한 검색 위젯을 전송하려는 것 같습니다. 검색 위젯의 유형이 동일한 지 확인한 다음 오류가 발생하지 않도록하십시오. – Anirudh

0
private SearchView mSearchView = null; 

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getSupportMenuInflater(); 
    inflater.inflate(R.menu.mainmenu, menu);   
    MenuItem searchItem = menu.findItem(R.id.search); 
    mSearchView = (SearchView) searchItem.getActionView(); 
    setupSearchView(searchItem); 
    return true; 
    } 


    private void setupSearchView(MenuItem searchItem) { 

      SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); 
      if (searchManager != null) { 
       mSearchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); 
       // mSearchView.setSearchableInfo(info); 
      }  
      mSearchView.setOnQueryTextListener(this); 

     } 
0

menu.xml 파일에 android.widget.SearchView를 사용해보십시오 다음 코드를 사용

0

당신이 import 문에서 참조하는 대부분의 경우 기본 안드로이드 위젯과 셜록이 아닌 검색 위젯 :

SearchView searchView = 
     (SearchView) menu.findItem(R.id.search).getActionView(); 
관련 문제