Android如何判断对话框是否已关闭或完成

赛义德·亚兹达尼(Saeid Yazdani)

在一个活动中ShowInfoActivity,用户通过单击一个按钮来弹出一个对话框:

mButtonInfo.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        DialogFragment infoDialog = new UpdateUserInfoDialog();
        infoDialog.show(getFragmentManager(), "Update Info Dialog");
    }
});

我在一个单独的文件中创建了此对话框,UpdateUserInfoDialog.java它具有一个空的活动UpdateUserInfoActivity.java,该活动是显示此对话框所必需的。

我有当用户在对话框完成的,要么是应该执行的另一种方法setPositiveButtonsetNegativeButton我无法ShowInfoActivity在对话框类中引用

这是对话框类的代码:

public class UpdateUserInfoDialog extends DialogFragment{

    public static final String TAG = "ChangeWeightDialog";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mReg = Storage.readUserRegistration(getActivity().getApplicationContext());
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container
            , Bundle savedInstanceState) {

        if(getDialog() != null) {
            getDialog().setCanceledOnTouchOutside(false);
        }

        return super.onCreateView(inflater, container, savedInstanceState);
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {

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

        final LayoutInflater inflater = getActivity().getLayoutInflater();
        final View dialogView = inflater.inflate(R.layout.dialog_update_userinfo, null);

    //Create dialog and stuff......

        builder.setPositiveButton("update", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
            //Handle positive click
            }
        });

        builder.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                //handle dnegative
                dismiss();
            }
        });


        builder.setTitle("update personal information");
        builder.setView(dialogView);
        return builder.create();
    }
}

因此,我要寻找的是在用户单击按钮以显示活动时告诉其侦听器,以判断该活动是否已被取消或完成:

mButtonInfo.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        DialogFragment infoDialog = new UpdateUserInfoDialog();

        //SOMETHING LIKE:
        infoDialog.whenDismissed(doThisMethod());

        infoDialog.show(getFragmentManager(), "Update Info Dialog");
    }
});

我已经尝试过了,但是它使NullPointerOnDissmiss(new ...)符合要求:

mButtonInfo.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        DialogFragment infoDialog = new UpdateUserInfoDialog();
        infoDialog.onDismiss(new DialogInterface() {
            @Override
            public void cancel() {
                showUserInformation();
            }
            @Override
            public void dismiss() {
                showUserInformation();
            }
        });
        infoDialog.show(getFragmentManager(), "Update Info Dialog");
    }
});
维诺拉多夫

尽量覆盖onDismiss()在你的UpdateUserInfoDialog它应该广播一个Intent通知对话框取消的自定义您可能会Intent在将调用您的的特定组件中发现这一点doThisMethod()
另外,请参阅LocalBroadcastManager以获取“本地”广播。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章