10

我试图制作一个 DialogFragment 可以在点击时关闭,经过一番搜索后我决定使用这个实现:

public class ErrorDialogFragment extends RoboDialogFragment {

private static final String MESSAGE_ARG = "message";
private TextView text;

public ErrorDialogFragment newInstance (String message){
    ErrorDialogFragment f = new ErrorDialogFragment();

        Bundle args = new Bundle();
        args.putString(MESSAGE_ARG, message);
        f.setArguments(args);

        return f;
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {     
    View v = inflater.inflate(R.layout.error_dialog_fragment, container, false);
    v.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            ErrorDialogFragment.this.dismiss();
        }
    });

    text = (TextView) v.findViewById(R.id.error_dialog_text_textView);
    text.setText(getArguments().getString(MESSAGE_ARG));
    return v;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setStyle(DialogFragment.STYLE_NO_TITLE, 0);
}

警报对话框可以有一条自定义消息,并在点击时将被关闭。

您认为实现这一目标的更好方法是什么?

谢谢。

4

3 回答 3

14

您可以使用dialog.setCanceledOnTouchOutside(true); 如果您在对话框外触摸,它将关闭对话框。或者

试试这个教程http://iserveandroid.blogspot.com/2010/11/how-to-dismiss-custom-dialog-based-on.html。希望能帮助到你..!!

于 2012-05-08T11:38:41.860 回答
2
final AlertDialog alertDialog = new AlertDialog.Builder(this).create();
        alertDialog.setTitle(title);
        alertDialog.setMessage(msg);
        alertDialog.setButton("OK", new DialogInterface.OnClickListener() 
        {
            public void onClick(DialogInterface dialog, int which) 
            {
                alertDialog.dismiss();
            }
        });
        alertDialog.setIcon(R.drawable.error_icon);
        alertDialog.show();

只要您想显示警报,只需使用此代码,它的 ok onclick 事件对话框将关闭。

于 2012-05-07T11:53:06.537 回答
1

我正在从 Activity 调用 DialogFragment。单击对话框中的按钮后,我使用接口调用活动中的方法。在那个活动中,我正在执行这个:

// This is the code inside the activity that call the dialog
Fragment fragment = getSupportFragmentManager().findFragmentByTag("MyDialog");
if(fragment != null) {
    DialogFragment dialog = (DialogFragment) fragment;
    dialog.dismiss();
}
于 2017-11-08T18:40:03.580 回答