2015-01-15 12 views
5

Sto avendo uno strano problema (almeno per me). la mia app funziona perfettamente con debug apk. ma quando creo apk di rilascio, allora mostra errore in searchwidget. Sto utilizzando libreria di supporto 'com.android.support:appcompat-v7:21.0.3'non funziona nell'apk di rilascio

questo è il mio codice

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // TODO Auto-generated method stub 

    MenuInflater mi = getMenuInflater(); 
    mi.inflate(R.menu.searchmenu, menu); 

    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); 
    final MenuItem searchItem = menu.findItem(R.id.searchwidget); 
    final SearchView searchView = (SearchView) MenuItemCompat 
      .getActionView(searchItem); 
    if(null!=searchManager) { 
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); 
    } 
    searchView.setIconifiedByDefault(false); 

    SearchView.OnQueryTextListener textChangeListener = new SearchView.OnQueryTextListener() { 
     @Override 
     public boolean onQueryTextChange(String newText) { 
      // this is your adapter that will be filtered 
      Programs.this.adapter.getFilter().filter(newText); 
      return true; 
     } 

     @Override 
     public boolean onQueryTextSubmit(String query) { 
      // this is your adapter that will be filtered 
      Programs.this.adapter.getFilter().filter(query); 
      return true; 
     } 
    }; 
    searchView.setOnQueryTextListener(textChangeListener); 

    return super.onCreateOptionsMenu(menu); 
} 

il mio codice di menu

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto"> 

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


</menu> 

primo momento ho pensato è il problema proguard quindi ho usato questo

-keepclassmembers class android.support.v7.widget.SearchView{ 
} 

ma ancora lo stesso problema.

qualcuno può spiegare perché questo sta accadendo?

+0

hmmm '-keepclassmembers'? sei sicuro? non '-keepnames'? – Selvin

+0

Non so cosa usare. dovrei usare -keepnames? –

+0

pensa solo ... cosa è necessario per creare una classe tramite la riflessione ... i suoi membri o il suo nome? – Selvin

risposta

15

È necessario aggiungere

-keep class android.support.v7.widget.SearchView { *; } 

a proguard-rules.pro file.

In qualche modo è correlato all'offuscamento di proguard, probabilmente un bug in SearchView. (alcune versioni interessate, altre no)

-3

disattivare il progaurd o fare come "false" da build.gradle

Esso aumenterà la dimensione, ma otterrà il lavoro fatto.

ha funzionato per me

Problemi correlati