【问题标题】:Android spinner on dialog crashes if the spinner is open (list up) and you rotate the device如果微调器打开(列出)并且您旋转设备,对话框上的 Android 微调器会崩溃
【发布时间】:2011-06-30 12:21:55
【问题描述】:

我有一个带有几个按钮和一个微调器的对话框,它似乎工作正常,但我的应用程序在以下情况下崩溃: 1.开始活动 2. 使用 Activity::showDialog 显示对话框(在 onCreateDialog 中创建) 3.单击微调器,使其显示列表 4.微调器提出一个AlertDialog 5.旋转设备 6. IllegalArgumentException 崩溃

我可以看到 Activity 已经消失,我的 Dialog 也消失了,但 Spinner 提出的 AlertDialog 仍然存在。我只会关闭 Spinner AlertDialog 但它是 Spinner 类的私有成员(我检查了 Android 源代码),因此无法访问它。

如果将 Spinner 移动到 Activity 中,您将获得: 1.开始活动 2.单击微调器,使其显示列表 3.微调器提出一个AlertDialog 4.旋转设备 5. spinner AlertDialog 消失 6. 活动显示旋转

我只能得出以下结论: 1.您根本不应该在对话框(或AlertDialog)上放置微调器,或者 2.Dialog或Activity有bug

有人对这个问题有任何智慧吗?

【问题讨论】:

  • 堆栈跟踪?听起来你正试图在 onRestore 之后使用空变量做一些事情。
  • Thread [<1> main] (Suspended (exception IllegalArgumentException)) ViewRoot.doDie() line: 2695 ViewRoot.handleMessage(Message) line: 1970 ViewRoot(Handler).dispatchMessage(Message) line: 99 Looper.loop() line: 144 ActivityThread.main(String[]) line: 4937 Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method] Method.invoke(Object, Object...) line: 521 ZygoteInit$MethodAndArgsCaller.run() line: 868 ZygoteInit.main(String[]) line: 626 NativeStart.main(String[]) line: not available [native method]
  • 抱歉,反引号似乎没有保留换行符。我通过锁定屏幕方向解决了这个问题,但显然这是一个肮脏的黑客攻击,只掩盖了问题的一种表现。 Spinner AlertDialog 很可能正在尝试访问原始 Activity(在旋转之前),但由于它是私有成员,因此很难看到该做什么。下一步是挖掘 Activity 和 AlertDialog 代码,但我现在没有时间。
  • 1970 行附近发生了什么?您正在尝试传入类型错误的变量。
  • 很难判断 1970 行周围发生了什么,因为它似乎被埋在 Android 消息循环中。我认为当 Activity 被拆除以进行旋转时,属于 Spinner 的 AlertDialog 正在被孤立。我只是要避免在对话框上使用 Spinners,无论如何它们都很丑。

标签: android dialog rotation spinner android-alertdialog


【解决方案1】:

在清单中,将此添加到您的活动声明中:

android:configChanges="orientation"

【讨论】:

  • 这并不能解决实际问题。这是一种解决方法。不是修复。
【解决方案2】:

我对 PopupWindow 也有同样的问题。解决方法是调用

popup.dismiss()

在 onDestroy() 方法中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多