Android SDK 22-SearchView渲染问题

Android SDK 22-SearchView渲染问题,android,android-layout,android-studio,searchview,Android,Android Layout,Android Studio,Searchview,我们刚刚将本地Android SDK更新为新的,我们也在尝试更新我们的应用程序,但在Android Studio的布局设计视图中呈现似乎有问题:每次设计器尝试呈现SearchView元素时,都会引发异常: 位于的java.lang.NullPointerException android.content.res.TypedArray.hasValueOrEmpty(TypedArray.java:845) 位于android.widget.SearchView.(SearchView.java:

我们刚刚将本地Android SDK更新为新的,我们也在尝试更新我们的应用程序,但在Android Studio的布局设计视图中呈现似乎有问题:每次设计器尝试呈现SearchView元素时,都会引发异常:

位于的java.lang.NullPointerException android.content.res.TypedArray.hasValueOrEmpty(TypedArray.java:845) 位于android.widget.SearchView.(SearchView.java:295) SearchView.(SearchView.java:258)位于 SearchView.(SearchView.java:254)位于 newInstance(Constructor.java:422)位于 createView(LayoutInflater.java:607)位于 onCreateView(LayoutInflater.java:682)位于 createViewFromTag(LayoutInflater.java:741) 在 android.view.LayoutInflater.rInflate_原件(LayoutInflater.java:806) 在 rayoutinflater_Delegate.rInflate(LayoutInflater_Delegate.java:64) 位于android.view.LayoutInflater.rInflate(LayoutInflater.java:782) 在android.view.LayoutInflater.inflate(LayoutInflater.java:504)中 膨胀(LayoutInflater.java:385)

即使我们在新的布局文件中从左工具栏创建新元素,也会发生这种情况。 有什么想法吗

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <SearchView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/searchView" />
</LinearLayout>


在中找到此项。在评估中失败的是
a
的解引用

    final TypedArray a = context.obtainStyledAttributes(
            attrs, R.styleable.SearchView, defStyleAttr, defStyleRes);

    [...]

    // Prior to L MR1, the search hint icon defaulted to searchIcon. If the
    // style does not have an explicit value set, fall back to that.
    if (a.hasValueOrEmpty(R.styleable.SearchView_searchHintIcon)) {
        mSearchHintIcon = a.getDrawable(R.styleable.SearchView_searchHintIcon);
    } else {
        mSearchHintIcon = a.getDrawable(R.styleable.SearchView_searchIcon);
    }

尝试设置样式属性?

我对Davide的评论投了赞成票。错误意味着searchIcon不能为空(为什么?)

这可以使用api 22在Studio中编译,但会强制您选择一个图标。这个例子是android上的两个默认设置之一(没有一个比searchview默认设置更酷),你可以随时定制一个

这里是片段

        <SearchView
        android:id="@+id/searchBox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:searchIcon="@android:drawable/ic_search_category_default"
        tools:ignore="UnusedAttribute" />

编辑 根据清单将设计器预览中的android版本更改为当前版本。呈现问题导致设计器预览使用的API级别高于当前android API级别


应该行得通

只需将android xml布局中的api 22更改为21即可


尝试将API级别更改为更高的级别渲染错误不会出现


它将解决渲染问题

这是什么意思?我们尝试将
android:searchHintIcon=“@drawable/ic_-icon”android:searchIcon=“@drawable/ic_-icon”
添加到SearchView中,但没有得到任何好结果:-(我们还尝试在SearchView元素中添加一个style属性,在styles.xml中添加相对的
android:searchHintIcon/android:searchIcon
。即使您的代码片段在布局设计中似乎不起作用,我们也会遇到同样的渲染错误。即使这看起来更像是一种黑客行为而不是解决方案,它也会起作用。谢谢!:-)