【问题标题】:DialogFragment.show hangs appDialogFragment.show 挂起应用程序
【发布时间】:2012-12-21 13:08:36
【问题描述】:

我有一个带有按钮的片段。单击按钮后,将执行以下代码:

@Override
    public void onClick(View clickedView) {
        switch(clickedView.getId()) {
            case R.id.btnTest:
                FragmentManager fm = getSherlockActivity().getSupportFragmentManager();
                MyDialog dialog = new MyDialog();
                dialog.show(fm, "TaskDeadlineDialog");
                break;
        }
    }

我的对话片段如下:

public class MyDialog extends DialogFragment 
{
    public MyDialog() {

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedBundleInstance) {
        View currentView = inflater.inflate(R.layout.my_dialog_layout, parent);
        System.out.println("Inflated!");
        return currentView;
    }

}

发生的情况是,对话框不显示并且应用停止响应。我正在使用 CM9 ICS 在三星 SII 上进行测试。

编辑:Logcat 也没有显示任何内容。

12-21 16:05:16.970: I/System.out(15753): debugger has settled (1304)
12-21 16:05:18.250: D/dalvikvm(15753): VFY: replacing opcode 0x6f at 0x0006
12-21 16:05:18.445: I/System.out(15753): Got ID: 1
12-21 16:05:20.430: I/System.out(15753): List position: 0
12-21 16:05:23.225: I/System.out(15753): Inflated!
12-21 16:05:38.510: D/dalvikvm(15753): GC_CONCURRENT freed 2265K, 41% free 4867K/8131K, paused 3ms+6ms
12-21 16:05:51.895: D/dalvikvm(15753): GC_CONCURRENT freed 1797K, 42% free 4787K/8131K, paused 2ms+2ms

..etc

我做错了什么?

【问题讨论】:

  • 你能发布日志跟踪吗?
  • 我已经编辑了我的帖子,展示了 logcat 对此的看法:)
  • 嗯,也许是break 导致了这个问题?我查看了switch-case 的对话框,发现不是break 而是返回对话框,你试过了吗?示例:mobile.tutsplus.com/tutorials/android/…
  • @Daniel,我从终端检查了 logcat ......这有什么重要的吗?输入事件调度超时发送到 com.app.myapp/com.app.myapp.myactivity
  • @Asok,这是一个点击事件而不是一个 onCreateDialog 事件,因此返回对话框实例将不起作用,因为点击事件返回 void :)

标签: java android android-fragments


【解决方案1】:

我能想到的只是你可能出于某种原因阻塞了 ui 线程。如果您使用同步操作或线程,我想这是一个很常见的错误。

再看一下您的代码,然后逐步按照过程进行操作。您等待应用再次开始响应的时间越长,Logcat 也应该输出超时调度。

编辑;这个答案可能会对您有所帮助:https://stackoverflow.com/a/5047865/559157

【讨论】:

  • 嗯...我似乎不太明白发生了什么。这应该是正常的 UI 操作。 FragmentActivity 显示片段 -> 在片段内单击的按钮 -> 片段显示对话框片段。我已经检查了您提供的链接,但我的案例和那个案例之间似乎没有任何共同之处。
【解决方案2】:

似乎我在对话框中充气的以下小部件导致了问题: https://github.com/SimonVT/android-calendarview

我会确保在项目的问题页面上将此报告给开发人员。

【讨论】:

    猜你喜欢
    • 2011-07-04
    • 2011-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-23
    • 2012-08-31
    • 2019-03-21
    相关资源
    最近更新 更多