2015-01-06 18 views
8

Merhaba Tıpkı bizim Gmail'de olduğu gibi bir Arama Görünümü uygulamaya çalışıyorum.SearchView boş Android

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    if (!mNavigationDrawerFragment.isDrawerOpen()) { 
     getMenuInflater().inflate(R.menu.main, menu); 

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


     restoreActionBar(); 
     return true; 
    } 

    return super.onCreateOptionsMenu(menu); 
} 

SearchView nesnesi boş

Bildirim:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.dgp" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="18" 
     android:targetSdkVersion="21" /> 

    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/logo" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <meta-data 
      android:name="android.app.default_searchable" 
      android:value=".GameSearchActivity" /> 

     <activity 
      android:name=".MainActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".GameInfoActivity" 
      android:label="@string/title_activity_game_info" > 
      <meta-data 
       android:name="android.support.PARENT_ACTIVITY" 
       android:value=".MainActivity" /> 
     </activity> 
     <activity 
      android:name=".SettingsActivity" 
      android:label="@string/title_activity_settings" > 
      <meta-data 
       android:name="android.support.PARENT_ACTIVITY" 
       android:value=".MainActivity" /> 
     </activity> 
     <activity 
      android:name=".GameSearchActivity" 
      android:label="@string/title_activity_game_search" > 
      <intent-filter> 
       <action android:name="android.intent.action.SEARCH" /> 
      </intent-filter> 

      <meta-data 
       android:name="android.app.searchable" 
       android:value="@xml/searchable" /> 
     </activity> 
    </application> 

</manifest> 

Searchable.xml

<searchable xmlns:android="http://schemas.android.com/apk/res/android" 
    android:label="@string/app_name" 
    android:hint="@string/search_hint" /> 

menü düzeni:

<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="com.example.dgp.MainActivity" > 

<item 
    android:id="@+id/action_search" 
    android:icon="@drawable/ic_action_search" 
    app:showAsAction="collapseActionView|always" 
    android:title="@string/action_search" 
    android:actionViewClass="android.support.v7.widget.SearchView"/> 

<item 
    android:id="@+id/action_settings" 
    android:orderInCategory="100" 
    android:title="@string/action_settings" 
    app:showAsAction="never"/></menu> 

Bu nesnenin neden boş olduğunu anlamak için herhangi biri yardımcı olabilir mi? Teşekkür ederim !!!!

+7

, bu uygulama olmamalıdır: actionViewClass'? ActionBarActivity'yi mi genişletiyorsunuz? – Blackbelt

+0

YEAHH harika yakalama Blackbelt !!! Bu sabit: D –

+0

Hoş Geldiniz – Blackbelt

cevap

29

deneyin:

<item 
    android:id="@+id/action_search" 
    android:icon="@drawable/ic_action_search" 
    app:showAsAction="collapseActionView|always" 
    android:title="@string/action_search" 
    android:actionViewClass="android.support.v7.widget.SearchView"/> 

kullanımını bu:

<item 
    android:id="@+id/action_search" 
    android:icon="@drawable/ic_action_search" 
    app:showAsAction="collapseActionView|always" 
    android:title="@string/action_search" 
    app:actionViewClass="android.support.v7.widget.SearchView"/> 

Yani app yerine android kullanmak gerekir actionViewClass = "android.support.v7.widget.SearchView" ---- menü xml:

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

teşekkür ederim! sorun buydu. –

+0

Şerefe, Yardımcı Olmak için Mutlu :) – shyam

+1

Çalışmıyor. Eksik cevap.Java kodu yok. – StarWind0

-1

Menü Sayfa düzeninde

MenuItem searchItem = menu.findItem(R.id.action_search); 
searchView = MenuItemCompat.getActionView(searchItem); 
+0

Kullanıyorum: MenuItem searchItem = menu.findItem (R.id.action_search); \t searchView = (SearchView) MenuItemCompat.getActionView (searchItem); Ancak aynı hata: 01-06 16: 51: 27.063: E/Android Çalışma Zamanı (27106): FATAL MUAFİYET: ana 01-06 16: 51: 27.063: E/AndroidRuntime (27106): İşlem: com.dgp, PID: 27106 01-06 16: 51: 27.063: E/Android Çalışması (27106): java.lang.NullPointerException: sanal yöntemi 'void android.support.v7.widget.SearchView.setSearchableInfo (android.app.SearchableInfo çağırmaya teşebbüs) 'null bir nesne başvurusu Teşekkür ederiz –

+0

menuitem boş olup olmadığını kontrol ettiniz mi? Karabelekler yorum da doğru, app olmalı: actionViewClass değil android: actionViewClass – Shooky

0

Eğer

uygulamayı kullanmak gerekir Arama görünümünü desteklemek için: menü öğesi etiketinde dosya

Ve java dosyası

bakın lütfen araba içinde

android.support.v7.widget.SearchView ithal etmek zorunda kalacak efully ithal sınıf android.support.v7.widget.SearchView olduğunu. Bu iki bölüm aynı değilse, boş gösterici istisna olabilir.

İlgili konular