0
嘗試獲取對onCreateOptionsMenu中的自定義SearchView類的引用時發生崩潰。通常這工作正常,但加載釋放apk時,它崩潰。我想這些行添加到我的proguard的,但它仍然崩潰:發佈版本上的自定義SearchView崩潰
# Android support
-keep public class com.mine.mobile.mypackage.usercontrol.SearchViewCustom
-keep class android.support.v7.** { *; }
-keep interface android.support.v7.** { *; }
這裏是代碼:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
mMenu = menu;
getMenuInflater().inflate(R.menu.menu_invest, menu);
final MenuItem searchItem = menu.findItem(R.id.action_invest_search);
if (searchItem != null) {
mSearchView = (SearchViewCustom) MenuItemCompat.getActionView(searchItem);
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
mSearchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
}
mPresenter = new BaseActivityPresenterImpl(this,mSearchView,mMenu,searchItem);
mPresenter.setupActionBar(NONE,false);
return super.onCreateOptionsMenu(menu);
}
這裏是日誌
java.lang.NullPointerException: Attempt to invoke virtual method 'void com.mine.mobile.mypackage.usercontrol.d.setSearchableInfo(android.app.SearchableInfo)' on a null object reference
! 1 at com.mine.mobile.mypackage.activity.home.a.onCreateOptionsMenu(BaseActivity.java:94)
2 at android.app.Activity.onCreatePanelMenu(Activity.java:3232)
3 at android.support.v4.app.q.onCreatePanelMenu(FragmentActivity.java:362)
4 at android.support.v7.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:98)
5 at android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallbackBase.onCreatePanelMenu(AppCompatDelegateImplBase.java:335)
6 at android.support.v7.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:98)
7 at android.support.v7.app.ToolbarActionBar.populateOptionsMenu(ToolbarActionBar.java:454)
8 at android.support.v7.app.ToolbarActionBar$1.run(ToolbarActionBar.java:61)
9 at android.view.Choreographer$CallbackRecord.run(Choreographer.java:871)
10 at android.view.Choreographer.doCallbacks(Choreographer.java:683)
11 at android.view.Choreographer.doFrame(Choreographer.java:616)
12 at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:857)
13 at android.os.Handler.handleCallback(Handler.java:751)
14 at android.os.Handler.dispatchMessage(Handler.java:95)
15 at android.os.Looper.loop(Looper.java:154)
16 at android.app.ActivityThread.main(ActivityThread.java:6247)
17 at java.lang.reflect.Method.invoke(Native Method)
18 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:872)
19 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)
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_delete"
android:title="@string/delete"
android:icon="@drawable/ic_delete_white"
app:showAsAction="always" />
<item
android:id="@+id/action_done"
android:title="@string/done"
android:icon="@drawable/ic_done_white"
app:showAsAction="always" />
<item
android:id="@+id/action_refresh"
android:icon="@drawable/ic_refresh_white"
android:visible="false"
android:title="@string/refresh_menu"
app:showAsAction="always" />
<item
android:id="@+id/action_invest_search"
android:icon="@drawable/ic_search_white"
android:visible="false"
android:title="@string/action_search"
app:actionViewClass="com.mine.mobile.mypackage.usercontrol.SearchViewCustom"
app:showAsAction="always|collapseActionView" />
</menu>
這不是重複什麼是什麼是NullPointerException,以及如何解決它? ...這個問題包含的方式太廣泛
你可以分享你menu.xml文件 –
新增menu.xml文件質疑 – Mike6679
使用Android Studio中3 APK探查,看看你的自定義類是你希望它是和不是招」嘗試t已被混淆到不同的名稱 – Kuffs