1

DialogButton即使我在其中,我也不会拒绝.dismiss()。我的代码:

    @Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.iabout);
    // custom dialog
    final Dialog dialog = new Dialog(context);
    dialog.setContentView(R.layout.iabout);


    dialogButton = (Button) dialog.findViewById(R.id.btAboutOK);
    // if button is clicked, close the custom dialog
    dialogButton.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            dialog.dismiss();
        }
    }); 
}

感谢任何帮助。

4

2 回答 2

1

请不要使用对话框,请使用DialogFragments。它们更容易维护。 (对于预蜂窝添加支持库到您的项目)

然后在你的DialogFragment课堂上使用类似这样AlertDialog.Builder的:onCreateDialog(Bdl bundle)

public class MyDialogFragment extends DialogFragment {


@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {

    return new AlertDialog.Builder(getActivity())
            .setIcon(R.drawable.alert_dialog_icon)
            .setTitle(R.string.alert_dialog_custom_title)
            .setPositiveButton(android.R.string.ok,
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {
                        ((MyActivity)getActivity()).doPositiveClick();
                    }
                }
            )
            .setNegativeButton(android.R.string.cancel,
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {
                        ((MyActivity)getActivity()).doNegativeClick();
                    }
                }
            )
            .create();
}

}

这些例子可以在这里找到。

如果您打算使用旧的使用对话框的方式,请至少使用对话框生成器

然后根据上面的示例,您可以设置回调方法。

如果您想使用自定义布局进行自定义对话框,使用s,那么您可以正确控制对话框的生命周期,DialogFragment然后您的自定义按钮可以只调用dismiss().DialogFragment

阅读此处提到的示例

干杯,克里斯

于 2012-08-28T15:05:21.560 回答
0

根据这个答案https://stackoverflow.com/a/3378859/975959,问题可能是因为您将对话框放在了onCreate()方法中。

虽然这个答案是关于方向变化的问题,但考虑他们的答案可能会更好:将对话实现移动到

@Override
onPostCreate()

方法。希望这可以帮助。

您还可以添加setCancelable(true)允许使用后退按钮关闭对话框

于 2012-08-28T15:04:36.007 回答