Android SDK 22 – SearchView呈现问题

我们刚刚更新了本地Android SDK到新版本22 ,我们也尝试更新我们的应用程序,但是在Android Studio的布局devise视图中, SearchView呈现似乎是一个问题:每次devise人员尝试呈现SearchView元素时,它会抛出一个exception:

java.lang.NullPointerException在android.content.res.TypedArray.hasValueOrEmpty(TypedArray.java:845)在android.widget.SearchView。(SearchView.java:295)在android.widget.SearchView。(SearchView.java:258)在android.view.LayoutInflater.createView(LayoutInflater.java:607)在android.view.java.reflect.Constructor.newInstance(Constructor.java:422)在android.widget.SearchView。(SearchView.java:254) .LayoutInflater.onCreateView(LayoutInflater.java:682)android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741)android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:806)android.view.LayoutInflater_Delegate.rInflate( android.view.LayoutInflater.rInflate(LayoutInflater.java:782)android.view.LayoutInflater.inflate(LayoutInflater.java:504)android.view.LayoutInflater.inflate(LayoutInflater.java:385)的layoutInflater_Delegate.java:64) )

即使我们在新的布局文件中从左侧工具栏中创build了一个新的元素,也会出现这种情况。 任何想法?

呈现错误

<?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> 

编辑

更改您的devise器预览版本的Android版本到您当前的版本取决于您的清单。 呈现问题导致您的devise者预览使用比您当前的android API级别更高的API级别。


它应该工作

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

在这里输入图像描述

我投票了大卫的评论。 错误意味着searchIcon不能为空(为什么?)。

这可以在Studio 22上编译,但强制你select一个图标。 这个例子是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" /> 

在源代码中find这个。 这是评估失败的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); } 

尝试设置风格的属性?

尝试将API级别更改为更高的渲染错误将不会存在。

在这里输入图像描述

它将解决渲染问题