我正在三星Galaxy Tab(P7500)(android 4.0.4)中测试应用程序,我在操作栏中尝试展开默认SearchView
小部件时遇到此错误。在4.0.4更新之前,我的应用程序运行良好。
错误日志:
09-29 14:18:28.460: E/AndroidRuntime(2814): java.lang.NullPointerException
09-29 14:18:28.460: E/AndroidRuntime(2814): at android.widget.SearchView.adjustDropDownSizeAndPosition(SearchView.java:1244)
09-29 14:18:28.460: E/AndroidRuntime(2814): at android.widget.SearchView.access$300(SearchView.java:92)
09-29 14:18:28.460: E/AndroidRuntime(2814): at android.widget.SearchView$5.onLayoutChange(SearchView.java:336)
09-29 14:18:28.460: E/AndroidRuntime(2814): at android.view.View.layout(View.java:11486)
09-29 14:18:28.460: E/AndroidRuntime(2814): at android.view.ViewGroup.layout(ViewGroup.java:4232)
09-29 14:18:28.460: E/AndroidRuntime(2814): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1644)
09-29 14:18:28.460: E/AndroidRuntime(2814): at android.widget.LinearLayout.layoutHorizontal(LinearLayout.java:1633)
09-29 14:18:28.460: E/AndroidRuntime(2814): at android.widget.LinearLayout.onLayout(LinearLayout.java:1417)
09-29 14:18:28.460: E/AndroidRuntime(2814): at android.view.View.layout(View.java:11477)
....
我试图捕获此错误。我检查了4.0.3和4.0.4源(API 15),以及android.widget.SearchView
文件的第1244行方法结束:http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.0.4_r2.1/android/widget/SearchView.java?av=f
我认为三星修改了这个源文件。
之后我尝试使用原始的4.0.4源代码和调试信息来确定空指针的位置。我发现问题可以在这里:
mQueryTextView.getDropDownBackground().getPadding(dropDownPadding);
mQueryTextView.getDropDownBackground()
返回null,因为SearchView.this.mQueryTextView.mPopup.mPopup.mBackground
为空。
我不确定这是错误的,因为三星已被修改过源代码。我不知道接下来我能做什么。
这是我的ActionBar菜单XML:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_settings"
android:title="@string/menu_settings"
android:orderInCategory="100" />
<item android:id="@+id/search"
android:title="Search"
android:showAsAction="ifRoom"
android:actionViewClass="android.widget.SearchView" />
<item
android:id="@+id/favorites"
android:title="Favourites"
android:icon="@drawable/favorites">
</item>
<item
android:id="@+id/recent"
android:title="Recent"
android:icon="@drawable/recent">
</item>
<item
android:id="@+id/downloaded"
android:title="Downloaded"
android:icon="@drawable/downloaded">
</item>
</menu>
答案 0 :(得分:0)
此问题似乎与应用于操作栏SearchView中的EditText的样式有关。
您可以通过删除已应用于EditText的任何样式来解决此问题,例如:
RES /值/ styles.xml
<item name="android:editTextStyle">@style/editor</item>
然后转到布局XML中的每个EditText视图并直接应用样式:
<EditText style="@style/editor" />