ClassCastException:使用带有标题标题的ContextMenu时,HeaderViewListAdapter无法转换为Android中的MenuAdapter

问题描述 投票:0回答:1

当我长时间单击ListView中的列表项并且注册了一个上下文菜单后,该错误就会出现,然后用户可以选择一个选项。

我在实际设备上没有错误,但是在仿真器(API级别25)上,我现在看到上面的错误。在堆栈跟踪中,没有引用我自己的代码,但它来自MenuPopupWindow行141,如下所示(这是Android预定义的类,而不是我的类)。当我在Android来源中查看该文件时,显示以下行:

((MenuAdapter) getAdapter()).getAdapterMenu().close(false /* closeAllMenus */);

这似乎导致以下异常:

E / UncaughtException:java.lang.ClassCastException:android.widget.HeaderViewListAdapter无法转换为com.android.internal.view.menu.MenuAdapter 在android.widget.MenuPopupWindow $ MenuDropDownListView.onKeyDown(MenuPopupWindow.java:141)

我已经检查了调用片段中的onCreateContextMenu方法是否没有问题-onCreateContextMenu执行完成后发生崩溃。

我以前在模拟器或真实设备上都没有像这样的问题,但这只是在将UI库升级到androidx库之后才发生。

因此,我想知道这是否与它有任何关系(但在实际设备上没有任何问题。由于问题是在内部Android类中发生的,因此我不知道如何解决此问题,或者这是否与我的代码有任何关系,或者是否是内部Android错误?

更新:当我省去以下行时,它不会在模拟器上崩溃(但是显然我的上下文菜单没有标题):

menu.setHeaderTitle("Tournament options");

菜单来自重写方法内部的位置:

public void onCreateContextMenu(ContextMenu menu, View v,
                                ContextMenu.ContextMenuInfo menuInfo) 

[此外,在运行API 29的模拟器上我也没有收到此错误。我在API 28上测试过的设备。由于我没有带API 25的真实设备(该设备在模拟器上崩溃),因此我不确定它是否会在带API 25的真实设备上崩溃。但是,当然,这令人担心模拟器API 25崩溃。

任何帮助表示赞赏。

java android androidx
1个回答
0
投票

好吧,我冷重启了模拟器,然后在任何API级别上都没有问题。只是以为我会把它发布为答案,以防万一其他人遇到这个问题。必须是API级别25的仿真器软件错误。

© www.soinside.com 2019 - 2024. All rights reserved.