为了账号安全,请及时绑定邮箱和手机立即绑定

如何从 alertDialog 片段接收是/否值到实际活动?

如何从 alertDialog 片段接收是/否值到实际活动?

料青山看我应如是 2022-11-30 16:59:12
我需要我的应用程序来测试此人是否单击是继续或取消停止。我有一个 AlertDialogFragment:public class FragmentConfirmarPicagem extends DialogFragment {    @NonNull    @Override    public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity())                .setTitle("Confirmar")                .setMessage("Deseja mesmo picar o ponto agora?")                .setPositiveButton("Sim", new DialogInterface.OnClickListener() {                    @Override                    public void onClick(DialogInterface dialog, int which) {                    }                })                .setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {                    @Override                    public void onClick(DialogInterface dialog, int which) {                    }                });        return builder.create();    }}然后我在 MainActivity 中有这段代码:new FragmentConfirmarPicagem().show(getSupportFragmentManager(), "Confirmar");我知道正/负按钮的 onClick 具有该功能,但就像在 MainActivity 中一样,我不知道单击的按钮。基本上我想要的是:    //if clicks Sim(Yes) does the following        switch (verificarPonto()) {            case 1:                txtHoraEntrada.setText(hora);                ponto.setEntrada(picagem);                return;            case 2:                txtHoraSaidaAlmoco.setText(hora);                ponto.setSaidaAlmoco(picagem);                return;            case 3:                txtHoraEntradaTarde.setText(hora);                ponto.setEntradaTarde(picagem);                return;            case 4:                txtHoraSaida.setText(hora);                ponto.setSaida(picagem);                return;            }
查看完整描述

1 回答

?
慕少森

TA贡献2019条经验 获得超9个赞

为什么需要为 Dialog 创建一个新类?


你可以直接从你的活动中做到这一点


            AlertDialog.Builder builder = new AlertDialog.Builder(thisActivity)

                    .setTitle("Confirmar")

                    .setMessage("Deseja mesmo picar o ponto agora?")

                    .setPositiveButton("Sim", new DialogInterface.OnClickListener() {

                        @Override

                        public void onClick(DialogInterface dialog, int which) {

                            switch (verificarPonto()) {

                                case 1:

                                    txtHoraEntrada.setText(hora);

                                    ponto.setEntrada(picagem);

                                   return;

                                ...

                            }

                        }

                    })

                    .setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {

                        @Override

                        public void onClick(DialogInterface dialog, int which) {


                        }

                    });

            builder.create().show();

如果由于某种原因你需要创建一个新类,你可以这样做


public static class FragmentConfirmarPicagem extends DialogFragment {

    public  DialogInterface.OnClickListener listener;

    @NonNull

    @Override

    public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {

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

                .setTitle("Confirmar")

                .setMessage("Deseja mesmo picar o ponto agora?")

                .setPositiveButton("Sim", listener)

                .setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {

                    @Override

                    public void onClick(DialogInterface dialog, int which) {


                    }

                });

        return builder.create();

    }

}

然后,在你的活动中


            FragmentConfirmarPicagem fcp = new FragmentConfirmarPicagem();

            fcp.listener = new DialogInterface.OnClickListener() {

                @Override

                public void onClick(DialogInterface dialog, int which) {

                    switch (verificarPonto()) {

                            case 1:

                                txtHoraEntrada.setText(hora);

                                ponto.setEntrada(picagem);

                               return;

                            ...

                        }                    

                    }

                };

                fcp.show(getSupportFragmentManager(), "Confirmar");


查看完整回答
反对 回复 2022-11-30
  • 1 回答
  • 0 关注
  • 83 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信