带有 SearchView 的应用程序在恢复时崩溃 [英] App with SearchView crashing on restore

查看:45
本文介绍了带有 SearchView 的应用程序在恢复时崩溃的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 SearchView 开发应用程序.

I'm developing app with SearchView.

当我打开搜索视图,按主页"并在启用不保留活动"选项的情况下恢复应用程序时,它会因异常而崩溃:

When I open the search view, pressing "Home" and restoring application with "Don't keep activities" option enabled, it crashes with exception:

 E/AndroidRuntime: FATAL EXCEPTION: main
  Process: com.github.ndczz.searchviewtest, PID: 20393
  java.lang.RuntimeException: Unable to start activity ComponentInfo{com.github.ndczz.searchviewtest/com.github.ndczz.searchviewtest.MainActivity}: java.lang.RuntimeException: Parcel android.os.Parcel@42e2e0b: Unmarshalling unknown type code 3801188 at offset 1980
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
      at android.app.ActivityThread.-wrap11(ActivityThread.java)
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
      at android.os.Handler.dispatchMessage(Handler.java:102)
      at android.os.Looper.loop(Looper.java:148)
      at android.app.ActivityThread.main(ActivityThread.java:5417)
      at java.lang.reflect.Method.invoke(Native Method)
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
   Caused by: java.lang.RuntimeException: Parcel android.os.Parcel@42e2e0b: Unmarshalling unknown type code 3801188 at offset 1980
      at android.os.Parcel.readValue(Parcel.java:2319)
      at android.os.Parcel.readArrayMapInternal(Parcel.java:2592)
      at android.os.BaseBundle.unparcel(BaseBundle.java:221)
      at android.os.Bundle.getSparseParcelableArray(Bundle.java:856)
      at com.android.internal.policy.PhoneWindow.restoreHierarchyState(PhoneWindow.java:2033)
      at android.app.Activity.onRestoreInstanceState(Activity.java:1004)
      at android.app.Activity.performRestoreInstanceState(Activity.java:959)
      at android.app.Instrumentation.callActivityOnRestoreInstanceState(Instrumentation.java:1163)
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2389)
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
      at android.app.ActivityThread.-wrap11(ActivityThread.java) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
      at android.os.Handler.dispatchMessage(Handler.java:102) 
      at android.os.Looper.loop(Looper.java:148) 
      at android.app.ActivityThread.main(ActivityThread.java:5417) 
      at java.lang.reflect.Method.invoke(Native Method) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

菜单/search.xml

menu/search.xml

<?xml version="1.0" encoding="utf-8"?>
 <menu xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto">
     <item
         android:id="@+id/search"
         android:icon="@android:drawable/ic_search_category_default"
         android:title="Search"
         app:actionViewClass="android.support.v7.widget.SearchView"
         app:showAsAction="always|collapseActionView" />
 </menu>

MainActivity.java

MainActivity.java

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.search, menu);
        return true;
    }
}

推荐答案

Bug 已在 appcompat 23.2.1

这篇关于带有 SearchView 的应用程序在恢复时崩溃的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆