我有一个自定义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();
答案 0 :(得分:1)
在onCreateDialog中,我忘了设置监听器:dialogObj.setOnShowListener(this)。