【发布时间】:2020-02-01 10:56:54
【问题描述】:
我已将代码移至 androidx,它在其他设备上运行良好,但我得到了
java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.appcompat.widget.SearchView.setSearchableInfo(android.app.SearchableInfo)' on a null object reference at packagename.FileName.onCreateOptionsMenu (FileName.java:43)in VIVO 设备
以下是我的菜单代码
<item
android:id="@+id/action_search"
android:icon="@android:drawable/ic_search_category_default"
android:orderInCategory="100"
android:title="@string/w_search"
app:showAsAction="always"
app:actionViewClass="androidx.appcompat.widget.SearchView" />
我无法弄清楚发生这种情况的原因。
编辑:
如果有帮助的话,我在com.google.android.material.textfield.TextInputLayout 中遇到过类似的问题,但在添加app:passwordToggleDrawable="@null" 后问题已解决
编辑 2:
搜索查看代码
getMenuInflater().inflate(R.menu.menu_search, menu);
// Associate searchable configuration with the SearchView
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
searchView = (SearchView) menu.findItem(R.id.action_search)
.getActionView();
searchView.setSearchableInfo(searchManager
.getSearchableInfo(getComponentName()));
searchView.setMaxWidth(Integer.MAX_VALUE);
searchView.setQueryHint(getResources().getString(R.string.w_hint_search));
SearchView.SearchAutoComplete searchAutoComplete = searchView.findViewById(R.id.search_src_text);
searchAutoComplete.setHintTextColor(Color.parseColor("#5FFFFFFF"));
searchAutoComplete.setTextColor(Color.WHITE);
【问题讨论】:
-
请显示 SearchView 类的代码
-
app:actionViewClass="androidx.appcompat.widget.SearchView" 您的问题可能是由于 androidx.尝试使用 appcompact
-
@HuzaifaAsif 你确定,这是迁移到 AndroidX 的正确方法吗? :D
-
@GensaGames 他正在使用 AndroidX app:actionViewClass="androidx.appcompat.widget.SearchView" 所以我指的是他应该尝试恢复到 appcompact。可能对他有帮助。我没有要求或告诉他迁移到 android x,也不是迁移到 android x 的一种方式 :)
-
不要恢复到 AppCompact。你的导入正确吗?导入 androidx.appcompat.widget.SearchView;我也使用 app:actionViewClass 所以我怀疑是它
标签: android material-design androidx