Как получить значение да / нет из фрагмента alertDialog для фактической активности? - PullRequest
0 голосов
/ 17 мая 2019

Мне нужно мое приложение, чтобы проверить, нажимает ли человек «да», чтобы продолжить, или «Отмена», чтобы остановить. У меня есть 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 Ответ

0 голосов
/ 17 мая 2019

Зачем вам нужно создавать новый класс для диалога?

Вы можете сделать это прямо из вашей деятельности

            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");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...