2016-07-27 2 views
2

다음 코드 조각을 사용하여 HomeActivity에서 내 툴바에 대한 검색 기능을 활성화합니다. 쿼리를 입력하면 응용 프로그램이 NearbySearchActivity로 이동해야하며 여기서 결과를 볼 수 있습니다.SearchView로 쿼리를 제출할 수 없습니다.

툴바가 표시되면 아이콘을 클릭하고 나타나는 SearchView에서 검색어를 입력하십시오. 그러나 소프트웨어 키보드에서 돋보기를 클릭하면 사라지고 아무 일도 일어나지 않습니다.

HomeActivity : HomeActivity의 탐색 아이콘의

public class HomeActivity extends AppCompatActivity implements 
     NavigationView.OnNavigationItemSelectedListener { 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.menu_home, menu); 

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

     return true; 
    } 
} 

XML 파일 :

<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="@drawable/ic_search" 
     app:showAsAction="collapseActionView|ifRoom" 
     app:actionViewClass="android.support.v7.widget.SearchView" /> 
</menu> 

AndroidManifest를 :

<activity android:name=".NearbySearchActivity"> 
    <intent-filter> 
     <action android:name="android.intent.action.SEARCH" /> 
    </intent-filter> 
    <meta-data 
     android:name="android.app.searchable" 
     android:resource="@xml/searchable" /> 
</activity> 
<activity 
    android:name=".HomeActivity" 
    android:label="@string/home_title" 
    android:theme="@style/AppTheme.NoActionBar" > 
    <meta-data android:name="android.app.default_searchable" 
     android:value=".NearbySearchActivity" /> 
</activity> 

검색 가능한 XML :

<?xml version="1.0" encoding="utf-8"?> 
<searchable 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:label="search"/> 

NearbySearchActivity :

public class NearbySearchActivity extends AppCompatActivity { 

    private String query = ""; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_nearby_search); 

     handleIntent(getIntent()); 
    } 

    @Override 
    protected void onNewIntent(Intent intent) { 
     handleIntent(intent); 
    } 

    private void handleIntent(Intent intent) { 
     if (Intent.ACTION_SEARCH.equals(intent.getAction())) { 
      query = intent.getStringExtra(SearchManager.QUERY); 
     } 
    } 
} 

어떻게 내가 입력하고 NearbySearchActivity로 이동 한 쿼리를 제출할 수 있습니까?

+0

귀하의 OnCreateOptionMenu에서 setOnQueryTextChangeListener를 구현하십시오. – Amir

답변

2

SearchView 용 OnQueryTextListener를 설정하고 있습니까? 이 리스너는 변경되거나 제출되는 u 리를 인식합니다.

searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
    @Override 
    public boolean onQueryTextSubmitted(String query) { 
     // Called when the user submits the query. 
     return true; 
    } 

    @Override 
    public boolean onQueryTextChange(String newText) { 
     // Called when the query text is changed by the user. 
     return true; 
    } 
} 
+0

그것은 작동합니다! 고마워요! –

관련 문제