我正在使用一个在可安装的应用程序中运行良好的简单搜索对话框,但只有在将代码作为即时应用程序运行时才会出现NullPointerException:
java.lang.NullPointerException:尝试调用接口方法 “android.app.SearchableInfo android.app.ISearchManager.getSearchableInfo(android.content.ComponentName)” 在空对象引用上
所有代码和资源都在基本模块中。
这发生在我的启动器活动中的onCreateOptionsMenu中:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_entity, menu);
// Associate searchable configuration with the SearchView
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
return true;
}
这是menu.xml文件(使用appcompat):
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/search"
android:icon="@drawable/ic_search_white"
android:title="@string/menu_search"
app:actionViewClass="android.support.v7.widget.SearchView"
app:showAsAction="collapseActionView|ifRoom"/>
</menu>
searchable.xml文件如下,以防万一:
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
android:label="@string/app_name"
android:hint="@string/search_hint" >
</searchable>
Manifest.xml中的活动:
<activity android:name=".EntityActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEARCH"/>
</intent-filter>
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable"/>
</activity>
可安装的应用程序正常运行。任何想法为什么会发生这种情况?
答案 0 :(得分:1)
您需要更新适用于预先设备的即时应用的Google Play服务。
在您的设备上:
转到Settings
&gt; Apps
&gt; Google Play services for Instant Apps
&gt; Uninstall
通知应提示您恢复&gt; restore it
这应该更新它应该不再导致此崩溃的最新版本,目前位于2.11-release-183080821
。
注意:很遗憾,到目前为止,不适用于模拟器,Android Studio会为其安装过时的版本。