2012-12-21 144 views
4

我有一个有一个按钮的片段。一旦按钮被点击下面的代码执行:DialogFragment.show挂起应用程序

@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 

我到底做错了什么?

+0

你可以发布日志跟踪吗? – Daniel

+0

我已编辑我的帖子,显示什么logcat不得不说这个:) – Maverick

+0

嗯,也许'break'导致这个问题?我用'switch-case'查看了对话框,发现不是'break',人们正在返回对话框,你试过了吗?例如:http://mobile.tutsplus.com/tutorials/android/android-sdk_working-with-dialogs/ – jnthnjns

回答

2

所有我能想到的是,你可能会阻止出于某种原因在UI线程。如果你使用同步操作或线程,我想这是一个很常见的错误。

再看看你的代码,并按照步骤的过程步骤。 Logcat也应该输出超时调度,等待应用程序再次开始响应的时间越长。

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

+0

嗯...我真的不明白发生了什么事。这应该是一个正常的UI操作。 FragmentActivity显示片段 - >按钮在片段内点击 - >片段显示对话框片段。我检查了您提供的链接,但在我的案件和该案件之间似乎没有任何共同之处。 – Maverick