Android Action Bar SearchView NullPointerException adjustDro



与搜索视图交互或使用搜索视图加载的活动时,问题发生。当使用setIconifiedByDefault(true)时,问题是在与搜索视图交互时加载活动后发生的,但是当使用setIconifiedByDefault(false)时,当活动加载时,问题发生。

以下错误是在logcat中输出的:

java.lang.NullPointerException
at android.widget.SearchView.adjustDropDownSizeAndPosition(SearchView.java:1244)

这是代码:

expepeActivity.java

public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.example, menu);
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        SearchManager manager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        SearchView search = (SearchView) menu.findItem(R.id.search).getActionView();
        search.setSearchableInfo(manager.getSearchableInfo(getComponentName()));
        search.setIconifiedByDefault(true);
        search.setOnQueryTextListener(new OnQueryTextListener() { 
            @Override 
            public boolean onQueryTextSubmit(String query) { 
                // Perform search
                return true; 
            }
        });
    }
    return true;
}

菜单/example.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/search"
        android:title="Search"
        android:showAsAction="ifRoom"
        android:actionViewClass="android.widget.SearchView" />
</menu>

xml/searchable.xml

<searchable xmlns:android="http://schemas.android.com/apk/res/android"
    android:label="@string/search"
    android:hint="@string/search" >
</searchable>

searchable.xml 中使用的"搜索"字符串在 values/strings.xml 中定义。另外, searchable.xml 文件在 androidmanifest.xml 中的活动标签中正确引用了:

<meta-data
    android:name="android.app.default_searchable"
    android:value="com.example.MainActivity" />
<meta-data
    android:name="android.app.searchable"
    android:resource="@xml/searchable" />

此问题是由在Action Bar SearchView中应用于EditText引起的。

您可以通过删除应用于EditText的任何样式来解决此问题,例如:

res/values/styles.xml

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

然后转到布局XML中的每个EditText视图,然后直接应用样式:

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

相关内容

最新更新