4

ボタンのあるフラグメントがあります。ボタンがクリックされると、次のコードが実行されます。

@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 を搭載した Samsung 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

私は何を間違っていますか?

4

2 に答える 2

2

私が考えることができるのは、何らかの理由で ui スレッドをブロックしている可能性があるということだけです。同期操作やスレッド化を利用している場合、これはよくある間違いだと思います。

コードをもう一度見て、手順に従ってください。Logcat は、アプリが再び応答を開始するのを待つほど、タイムアウトしたディスパッチを出力する必要があります。

編集; この回答が役立つかもしれません: https://stackoverflow.com/a/5047865/559157

于 2012-12-21T13:38:34.563 に答える
0

ダイアログ内で膨らませていた次のウィジェットが問題を引き起こしているようです: https://github.com/SimonVT/android-calendarview

プロジェクトの問題ページで、これを開発者に報告するようにします。

于 2012-12-21T14:08:05.303 に答える