2012-12-21 143 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