3

Samsung 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ソースとデバッグ情報を使用して、nullポインターがどこにあるかを判別しようとしました。私は問題がここにある可能性があることを発見しました:

mQueryTextView.getDropDownBackground().getPadding(dropDownPadding);

mQueryTextView.getDropDownBackground()nullであるため、nullを返しますSearchView.this.mQueryTextView.mPopup.mPopup.mBackground

samsungはソースコードを変更しているため、これが正確にエラーであるかどうかはわかりません。そして、次に何ができるかわかりません。

これは私の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>
4

1 に答える 1

0

この問題は、アクション バー SearchView の EditText にスタイルが適用されていることに関連しているようです。

これは、次のような EditText に適用したスタイルを削除することで修正できます。

res/values/styles.xml

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

次に、レイアウト XML の各 EditText ビューに移動し、スタイルを直接適用します。

<EditText style="@style/editor" />
于 2014-01-28T12:06:16.103 に答える