如何在android.widget.SearchView

时间:2018-11-20 14:59:35

标签: android android-layout searchview

Fatal Exception: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.***.***/com.***.***.activities.SearchActivity}: android.view.InflateException: Binary XML file line #29: Binary XML file line #29: Error inflating class android.widget.SearchView
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2451)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2511)
   at android.app.ActivityThread.access$900(ActivityThread.java:165)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1375)
   at android.os.Handler.dispatchMessage(Handler.java:102)
   at android.os.Looper.loop(Looper.java:150)
   at android.app.ActivityThread.main(ActivityThread.java:5621)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:684)



Caused by java.lang.reflect.InvocationTargetException
   at java.lang.reflect.Constructor.newInstance(Constructor.java)
   at android.view.LayoutInflater.createView(LayoutInflater.java:638)
   at com.mikepenz.iconics.context.InternalLayoutInflater.onCreateView(InternalLayoutInflater.java:54)
   at android.view.LayoutInflater.onCreateView(LayoutInflater.java:713)
   at com.mikepenz.iconics.context.InternalLayoutInflater.onCreateView(InternalLayoutInflater.java:70)
   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:781)
   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:723)
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:854)
   at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:817)
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:857)
   at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:817)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:534)
   at com.mikepenz.iconics.context.InternalLayoutInflater.inflate(InternalLayoutInflater.java:81)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:434)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:377)
   at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469)
   at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
   at com.***.***.activities.SearchActivity.onCreate(SearchActivity.java:124)
   at android.app.Activity.performCreate(Activity.java:6367)
   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1110)
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2404)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2511)
   at android.app.ActivityThread.access$900(ActivityThread.java:165)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1375)
   at android.os.Handler.dispatchMessage(Handler.java:102)
   at android.os.Looper.loop(Looper.java:150)
   at android.app.ActivityThread.main(ActivityThread.java:5621)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:684)

Caused by android.view.InflateException: Binary XML file line #79: Binary XML file line #79: Error inflating class android.widget.SearchView$SearchAutoComplete
   at android.view.LayoutInflater.inflate(LayoutInflater.java:558)
   at com.mikepenz.iconics.context.InternalLayoutInflater.inflate(InternalLayoutInflater.java:81)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:434)
   at android.widget.SearchView.inflateSearchView(SearchView.java:1847)
   at android.widget.SearchView.(SearchView.java:268)
   at android.widget.SearchView.(SearchView.java:259)
   at android.widget.SearchView.(SearchView.java:255)
   at java.lang.reflect.Constructor.newInstance(Constructor.java)
   at android.view.LayoutInflater.createView(LayoutInflater.java:638)
   at com.mikepenz.iconics.context.InternalLayoutInflater.onCreateView(InternalLayoutInflater.java:54)
   at android.view.LayoutInflater.onCreateView(LayoutInflater.java:713)
   at com.mikepenz.iconics.context.InternalLayoutInflater.onCreateView(InternalLayoutInflater.java:70)
   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:781)
   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:723)
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:854)
   at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:817)
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:857)
   at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:817)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:534)
   at com.mikepenz.iconics.context.InternalLayoutInflater.inflate(InternalLayoutInflater.java:81)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:434)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:377)
   at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469)
   at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
   at com.***.***.activities.SearchActivity.onCreate(SearchActivity.java:124)
   at android.app.Activity.performCreate(Activity.java:6367)
   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1110)
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2404)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2511)
   at android.app.ActivityThread.access$900(ActivityThread.java:165)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1375)
   at android.os.Handler.dispatchMessage(Handler.java:102)
   at android.os.Looper.loop(Looper.java:150)
   at android.app.ActivityThread.main(ActivityThread.java:5621)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:684)

Caused by android.view.InflateException: Binary XML file line #79: Error inflating class android.widget.SearchView$SearchAutoComplete
   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:801)
   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:723)
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:854)
   at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:817)
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:857)
   at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:817)
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:857)
   at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:817)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:534)
   at com.mikepenz.iconics.context.InternalLayoutInflater.inflate(InternalLayoutInflater.java:81)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:434)
   at android.widget.SearchView.inflateSearchView(SearchView.java:1847)
   at android.widget.SearchView.(SearchView.java:268)
   at android.widget.SearchView.(SearchView.java:259)
   at android.widget.SearchView.(SearchView.java:255)
   at java.lang.reflect.Constructor.newInstance(Constructor.java)
   at android.view.LayoutInflater.createView(LayoutInflater.java:638)
   at com.mikepenz.iconics.context.InternalLayoutInflater.onCreateView(InternalLayoutInflater.java:54)
   at android.view.LayoutInflater.onCreateView(LayoutInflater.java:713)
   at com.mikepenz.iconics.context.InternalLayoutInflater.onCreateView(InternalLayoutInflater.java:70)
   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:781)
   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:723)
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:854)
   at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:817)
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:857)
   at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:817)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:534)
   at com.mikepenz.iconics.context.InternalLayoutInflater.inflate(InternalLayoutInflater.java:81)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:434)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:377)
   at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469)
   at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
   at com.***.***.activities.SearchActivity.onCreate(SearchActivity.java:124)
   at android.app.Activity.performCreate(Activity.java:6367)
   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1110)
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2404)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2511)
   at android.app.ActivityThread.access$900(ActivityThread.java:165)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1375)
   at android.os.Handler.dispatchMessage(Handler.java:102)
   at android.os.Looper.loop(Looper.java:150)
   at android.app.ActivityThread.main(ActivityThread.java:5621)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:684)

Caused by java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.widget.SearchView.isInActionMode()' on a null object reference
   at android.widget.SearchView$SearchAutoComplete.enoughToFilter(SearchView.java:1801)
   at android.widget.AutoCompleteTextView.doAfterTextChanged(AutoCompleteTextView.java:781)
   at android.widget.AutoCompleteTextView$MyWatcher.afterTextChanged(AutoCompleteTextView.java:749)
   at android.widget.TextView.sendAfterTextChanged(TextView.java:8232)
   at android.widget.TextView.setText(TextView.java:4435)
   at android.widget.TextView.setText(TextView.java:4283)
   at android.widget.EditText.setText(EditText.java:84)
   at android.widget.TextView.setText(TextView.java:4258)
   at com.mikepenz.iconics.Iconics$IconicsBuilderView.build(Iconics.java:297)
   at com.mikepenz.iconics.context.IconicsFactory.onViewCreatedInternal(IconicsFactory.java:50)
   at com.mikepenz.iconics.context.IconicsFactory.onViewCreated(IconicsFactory.java:27)
   at com.mikepenz.iconics.context.InternalLayoutInflater$PrivateWrapperFactory2.onCreateView(InternalLayoutInflater.java:245)
   at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:189)
   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:773)
   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:723)
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:854)
   at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:817)
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:857)
   at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:817)
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:857)
   at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:817)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:534)
   at com.mikepenz.iconics.context.InternalLayoutInflater.inflate(InternalLayoutInflater.java:81)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:434)
   at android.widget.SearchView.inflateSearchView(SearchView.java:1847)
   at android.widget.SearchView.(SearchView.java:268)
   at android.widget.SearchView.(SearchView.java:259)
   at android.widget.SearchView.(SearchView.java:255)
   at java.lang.reflect.Constructor.newInstance(Constructor.java)
   at android.view.LayoutInflater.createView(LayoutInflater.java:638)
   at com.mikepenz.iconics.context.InternalLayoutInflater.onCreateView(InternalLayoutInflater.java:54)
   at android.view.LayoutInflater.onCreateView(LayoutInflater.java:713)
   at com.mikepenz.iconics.context.InternalLayoutInflater.onCreateView(InternalLayoutInflater.java:70)
   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:781)
   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:723)
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:854)
   at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:817)
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:857)
   at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:817)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:534)
   at com.mikepenz.iconics.context.InternalLayoutInflater.inflate(InternalLayoutInflater.java:81)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:434)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:377)
   at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469)
   at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
   at com.***.***.activities.SearchActivity.onCreate(SearchActivity.java:124)
   at android.app.Activity.performCreate(Activity.java:6367)
   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1110)
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2404)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2511)
   at android.app.ActivityThread.access$900(ActivityThread.java:165)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1375)
   at android.os.Handler.dispatchMessage(Handler.java:102)
   at android.os.Looper.loop(Looper.java:150)
   at android.app.ActivityThread.main(ActivityThread.java:5621)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:684)

根据日志,当试图扩大searchview时,它在活动的oncreate中发生。我使用的是'android.widget.SearchView'而不是appcompat,因为我正在对其进行动画处理,并且无法正确获取appcompat版本的动画。

我不认为这是一个动画问题。我不知道为什么它仅在华为设备上发生。我上周发布了此更新,它已经在10万多种设备上发布。根据Crashlytics的说法,其100%的华为和81%的Android 8、15%的Android 7和4%的Android 6。

我在启动活动,创建活动和其他一些地方尝试过try / catching,但没有发现。我可以在需要时发布代码,但想看看是否有必要。

这是布局中的搜索视图

 <SearchView
        android:id="@+id/search_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:alpha="0"
        android:iconifiedByDefault="false"/>

这是在oncreate中初始化searchview

 SearchManager searchManager = (SearchManager) getSystemService(SEARCH_SERVICE);
    if (searchManager != null) {
        searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
    }

设置setSearchableInfo会调用updateSearchAutoComplete(),崩溃从此处开始。但是我尝试过尝试/捕获那里仍然崩溃。

0 个答案:

没有答案