为什么我的自定义dialogfragment中没有onShow被调用?

时间:2015-02-15 01:18:02

标签: android android-alertdialog android-dialogfragment

我有一个自定义alertdialog来实现接口,以便可以调用它们的回调。

我在onDismiss和onShow的第一行设置了断点。

弹出对话框,我看到所有视图,但是onShow中的断点没有被点击,我的异步任务也没有被创建。

public class CountdownDialogFragment extends DialogFragment 
implements OnClickListener, OnShowListener, OnDismissListener {
    InnerClassAsyncTask myAsyncTask;

@Override public Dialog onCreateDialog(Bundle savedInstanceState) {

        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

        builder.setTitle("Countdown");
        builder.setMessage("The final countdown...");

        builder.setNegativeButton("Cancel", this);
        builder.setPositiveButton(getResources().getString("Start", this);

        builder.setView(view);

        return builder.create();
    }
    @Override public void onDismiss(final DialogInterface dialog) {
        myAsyncTask.cancel(true);
    }

    public void setDialogOnClickListener(OnClickListener  
                                     dialogOnClickListener) {
        clickListener = dialogOnClickListener;
    }

    @Override
    public void onClick(DialogInterface dialog, int which) {
        if(clickListener != null) {
            clickListener.onClick(dialog, which);
        }
    }

    @Override
    public void onShow(DialogInterface dialog) {
        myAsyncTask = new InnerClassAsyncTask();
        myAsyncTask.execute();
    }

    private static class InnerClassAsyncTask extends AsyncTask<Void,    
                                                     Integer, Void> {
    // ...updates a determinate progressbar in this alert dialog
    }

在我的调用片段中,我通过newInstance实例化该对话框并通过以下方式显示:

myCountdownDialog.show();

1 个答案:

答案 0 :(得分:1)

在onCreateDialog中,我忘了设置监听器:dialogObj.setOnShowListener(this)。