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级别更改为更高的渲染错误将不会存在。
它将解决渲染问题