SORU
26 AĞUSTOS 2013, PAZARTESİ


MenuİtemCompat.getActionView her zaman null döndürür

Sadece v7 AppCompat destek kitaplığı ama test ettim her Android sürümü(4.2.2, 2.3.4 ....) MenuItemCompat.getActionView her zaman döndürür null uygulanan

SearchView eylem çubuğunda görüntülenir ama dokunma eylemlerine tepki vermiyor ve EditText göstermek için genişletmek değil ve sadece basit bir simge gibi.

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

    MenuItem searchItem = menu.findItem(R.id.action_search);
    SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
    if (searchView != null) {
        SearchViewCompat.setOnQueryTextListener(searchView, mOnQueryTextListener);
        searchView.setIconifiedByDefault(false);
        Log.d(TAG,"SearchView not null");
    } else
        Log.d(TAG, "SearchView is null");
    }
    return super.onCreateOptionsMenu(menu);
}

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:showAsAction="always|collapseActionView"
          android:icon="@drawable/abc_ic_search"
          android:title="@string/action_bar_search"
          android:actionViewClass="android.support.v7.widget.SearchView"/>

    <item android:id="@ id/action_refresh"
          android:icon="@drawable/refresh"
          android:title="@string/action_bar_refresh"
          app:showAsAction="ifRoom"/>
</menu>

CEVAP
26 AĞUSTOS 2013, PAZARTESİ


Sonunda çözümü buldum.

  1. app:actionViewClass android:actionViewClass actionViewClass değişen ad

  2. Geçerli etkinlik için android.support.v7.widget.SearchView.OnQueryTextListener arayüz uygulama.

  3. Doğrudan SearchViewCompat.setOnQueryTextListener yerine setOnQueryTextListener kullanın

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
      MenuInflater inflater = getMenuInflater();
      inflater.inflate(R.menu.menu, menu);
    
      MenuItem searchItem = menu.findItem(R.id.action_search);
      SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
      if (searchView != null) {
         searchView.setOnQueryTextListener(this);
      }
    
      return super.onCreateOptionsMenu(menu);
    }
    

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • GFX Tutorials

    GFX Tutorial

    12 AĞUSTOS 2013
  • Jejoab

    Jejoab

    4 NİSAN 2008
  • Tome Rodrigo

    Tome Rodrigo

    9 Temmuz 2006