Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android SearchView扩展引发空指针异常_Android_Nullpointerexception_Android Actionbar_Android 4.0 Ice Cream Sandwich - Fatal编程技术网

Android SearchView扩展引发空指针异常

Android SearchView扩展引发空指针异常,android,nullpointerexception,android-actionbar,android-4.0-ice-cream-sandwich,Android,Nullpointerexception,Android Actionbar,Android 4.0 Ice Cream Sandwich,我正在三星Galaxy Tab(P7500)(安卓4.0.4)中测试应用程序,在尝试在操作栏中展开默认SearchViewwidget时出现此错误。在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.Search

我正在三星Galaxy Tab(P7500)(安卓4.0.4)中测试应用程序,在尝试在操作栏中展开默认
SearchView
widget时出现此错误。在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和d 4.0.4源代码(API 15),以及
android.widget.SearchView
文件的第1244行方法结束:

我认为三星修改了这个源文件

之后,我尝试使用原始的4.0.4源代码和调试信息来确定空指针的位置。我发现问题可能在这里:

mQueryTextView.getDropDownBackground().getPadding(dropDownPadding);
mQueryTextView.getDropDownBackground()
返回null,因为
SearchView.this.mQueryTextView.mPopup.mPopup.mBackground
为null

我不确定这到底是错误,因为三星已经修改了源代码。我不知道我下一步能做什么

这是我的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>

此问题似乎与应用于操作栏搜索视图中编辑文本的样式有关

可以通过删除已应用于EditText的任何样式来修复此问题,例如:

res/values/styles.xml

<item name="android:editTextStyle">@style/editor</item>
@style/editor
然后转到布局XML中的每个EditText视图并直接应用样式:

<EditText style="@style/editor" />

对于SO主持人:此答案重复: