3

我正在測試三星Galaxy Tab(P7500)(android 4.0.4)中的應用程序,我在嘗試在操作欄中展開默認SearchView小部件時出現此錯誤。在4.0.4更新之前,我的應用程序工作得很好。SearchView展開拋出空指針異常

錯誤日誌:

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行方法結束: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爲空。

我不確定這是完全錯誤,因爲三星已經修改源代碼。我不知道接下來我能做什麼。

這是我動作條菜單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

這個問題似乎被應用到的EditText操作欄中搜索查看是相關的樣式。

RES /價值/ styles.xml

<item name="android:editTextStyle">@style/editor</item> 

然後去各的EditText視圖在佈局XML和應用:

您可以通過刪除已應用到的EditText如任何款式的解決這個問題直接的風格:

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

這麼主持人:這個答案是重複的:http://stackoverflow.com/a/22295139/2178259](http://stackoverflow.com/a/22295139/2178259) –