Action bar views (share action provider and searchview) crashes after generating signed apk. When i debug app from android studio it's working but when i generating signed apk and install app to device i getting errors like this :
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.SearchView.setQueryHint(java.lang.CharSequence)' on a null object reference
at tm.veriloft.ertir.ui.SearchActivity.onCreateOptionsMenu(Unknown Source)
at android.app.Activity.onCreatePanelMenu(Activity.java:2820)
at android.support.v4.app.o.onCreatePanelMenu(Unknown Source)
at android.support.v7.app.e.a(Unknown Source)
at android.support.v7.app.g.a(Unknown Source)
at android.support.v7.widget.as.a(Unknown Source)
at android.support.v7.internal.a.a.j(Unknown Source)
at android.support.v7.internal.a.b.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
or
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.ah.a(android.content.Intent)' on a null object reference
at tm.veriloft.ertir.ui.BlogViewActivity.onCreateOptionsMenu(Unknown Source)
at android.app.Activity.onCreatePanelMenu(Activity.java:2820)
at android.support.v4.app.o.onCreatePanelMenu(Unknown Source)
at android.support.v7.app.e.a(Unknown Source)
at android.support.v7.app.g.a(Unknown Source)
at android.support.v7.widget.as.a(Unknown Source)
at android.support.v7.internal.a.a.j(Unknown Source)
at android.support.v7.internal.a.b.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
I'm using last versions of support libraries and toolbar. (by setting setSupportActionBar(mToolbar)
).
SearchView xml :
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ertir="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_search"
android:title="@string/title_activity_search"
ertir:showAsAction="always"
ertir:actionViewClass="android.support.v7.widget.SearchView" />
</menu>
Java
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.search, menu);
MenuItem searchItem = menu.findItem(R.id.action_search);
mSearchView = (SearchView) searchItem.getActionView();
mSearchView.setQueryHint(getString(R.string.search_hint));
mSearchView.setFocusable(true);
mSearchView.setIconified(false);
mSearchView.requestFocusFromTouch();
mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
mSearchView.clearFocus(); //Hide keyboard
search(query, searchTypeArray.get(searchTypeSpinner.getSelectedItemPosition()).getType());
return false;
}
@Override
public boolean onQueryTextChange(String query) {
if (searchTypeArray.get(searchTypeSpinner.getSelectedItemPosition()).getType().equals("blogs"))
searchAfter(1100, query, searchTypeArray.get(searchTypeSpinner.getSelectedItemPosition()).getType());
else
search(query, searchTypeArray.get(searchTypeSpinner.getSelectedItemPosition()).getType());
return false;
}
});
return true;
}
How can i fix this? Like is said above, i get errors only after signing apk.
In proguard-rules.pro, add the following line to exclude the SearchView class: '-keep class android.support.v7.widget.** { *; }' and then create the build. I resolved it like this.
It happens because you have not configured your progaurd
appropiately. In you build.gradle
under buildTypes
and 'release' change runProguard true
to runProguard false
and generate the singed APK and test. If it works well, try learning to configure progaurd appropriately :)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With