Возвращаясь к предыдущему фрагменту - PullRequest
0 голосов
/ 17 февраля 2020
<ViewFlipper
            android:id="@+id/flipper"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            app:layout_constraintBottom_toTopOf="@id/btnAccept"
            app:layout_constraintTop_toBottomOf="@id/lnlStepper">

            <FrameLayout
                android:id="@+id/frameStep1"
                android:layout_width="match_parent"
                android:layout_height="match_parent" />

            <FrameLayout
                android:id="@+id/frameStep2"
                android:layout_width="match_parent"
                android:layout_height="match_parent" />

            <FrameLayout
                android:id="@+id/frameStep3"
                android:layout_width="match_parent"
                android:layout_height="match_parent" />

            <FrameLayout
                android:id="@+id/frameStep4"
                android:layout_width="match_parent"
                android:layout_height="match_parent" />

            <FrameLayout
                android:id="@+id/frameStep5"
                android:layout_width="match_parent"
                android:layout_height="match_parent" />

            <FrameLayout
                android:id="@+id/frameStep6"
                android:layout_width="match_parent"
                android:layout_height="match_parent" />

            <FrameLayout
                android:id="@+id/frameStep7"
                android:layout_width="match_parent"
                android:layout_height="match_parent" />

        </ViewFlipper>      









     public class CreateDiscountFragment extends FragmentUtil<FragmentCreateDiscountBinding> {
            private static final String SHOP_ID = "shopId";

            private String shopId;
            private Discount discount;

            private Step1Fragment step1Fragment;
            private Step2Fragment step2Fragment;
            private Step3Fragment step3Fragment;
            private Step4Fragment step4Fragment;
            private Step5Fragment step5Fragment;
            private Step6Fragment step6Fragment;
            private Step7Fragment step7Fragment;

            private StepperRepository repository;
            private ProgressBarDialog progressBarDialog;
            private FragmentCreateDiscountBinding binding;

            private List<String> steps = Arrays.asList("customers", "barter", "condition", "selectable");

            public CreateDiscountFragment() {
                // Required empty public constructor
            }

            public static CreateDiscountFragment newInstance(String shopId) {
                CreateDiscountFragment fragment = new CreateDiscountFragment();
                Bundle args = new Bundle();
                args.putString(SHOP_ID, shopId);
                fragment.setArguments(args);
                return fragment;
            }

            @Override
            public void onCreate(@Nullable Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);

                repository = new StepperRepository();

                if (getArguments() != null) {
                    shopId = getArguments().getString(SHOP_ID);
                }
            }

            @Override
            public FragmentCreateDiscountBinding onViewCreate(FragmentCreateDiscountBinding binding) {
                this.binding = binding;



                progressBarDialog = new ProgressBarDialog(activity);
                binding.btnBck.setOnClickListener(v -> {
                    back();


                });

                step1Fragment = new Step1Fragment();
                step2Fragment = new Step2Fragment();
                step3Fragment = new Step3Fragment();
                step4Fragment = new Step4Fragment();
                step5Fragment = new Step5Fragment();
                step6Fragment = new Step6Fragment();
                step7Fragment = new Step7Fragment();

                getChildFragmentManager().beginTransaction().replace(R.id.frameStep1, step1Fragment).commit();
                getChildFragmentManager().beginTransaction().replace(R.id.frameStep2, step2Fragment).commit();
                getChildFragmentManager().beginTransaction().replace(R.id.frameStep3, step3Fragment).commit();
                getChildFragmentManager().beginTransaction().replace(R.id.frameStep4, step4Fragment).commit();
                getChildFragmentManager().beginTransaction().replace(R.id.frameStep5, step5Fragment).commit();
                getChildFragmentManager().beginTransaction().replace(R.id.frameStep6, step6Fragment).commit();
                getChildFragmentManager().beginTransaction().replace(R.id.frameStep7, step7Fragment).commit();

                binding.btnAccept.setOnClickListener(v -> commit());

                begin();

                return binding;
            }

            @Override
            public int getLayoutId() {
                return R.layout.fragment_create_discount;
            }

            private void begin() {
                if (!progressBarDialog.isShowing()) progressBarDialog.show();
                repository.index(shopId, response -> activity.runOnUiThread(() -> {
                    if (progressBarDialog.isShowing()) progressBarDialog.dismiss();

                    if (response != null && response.getStep() > 0 && response.getStep() <= 7) {
                        discount = response;
                    } else {
                        discount = new Discount();
                        discount.setShop_id(shopId);
                        discount.setStep(1);
                    }

                    next();
                }));
            }
        private void back(){
                switch (discount.getStep()){
                    case 2:
                        step2Fragment.setDiscount(discount);
                        binding.flipper.setDisplayedChild(1);
                        break;
                    case 3:
                        step2Fragment.setDiscount(discount);
                        binding.flipper.setDisplayedChild(2);
                        break;
                    case 4:
                        step2Fragment.setDiscount(discount);
                        binding.flipper.setDisplayedChild(3);
                        break;
                    case 5:
                        step2Fragment.setDiscount(discount);
                        binding.flipper.setDisplayedChild(4);
                        break;
                    case 6:
                        step2Fragment.setDiscount(discount);
                        binding.flipper.setDisplayedChild(5);
                        break;

                }
            applyStep(discount.getStep());
        }

            private void next() {
                switch (discount.getStep()) {
                    case 1:
                        step1Fragment.setDiscount(discount);
                        binding.flipper.setDisplayedChild(0);

                        break;
                    case 2:
                        step2Fragment.setDiscount(discount);

                        binding.flipper.setDisplayedChild(1);
                        break;
                    case 3:
                        step3Fragment.setDiscount(discount);
                        binding.flipper.setDisplayedChild(2);
                        break;
                    case 4:
                        step4Fragment.setDiscount(discount);
                        binding.flipper.setDisplayedChild(3);
                        break;
                    case 5:
                        step5Fragment.setDiscount(discount);
                        binding.flipper.setDisplayedChild(4);
                        break;
                    case 6:
                        step6Fragment.setDiscount(discount);
                        binding.flipper.setDisplayedChild(5);
                        break;
                    case 7:
                        step7Fragment.setDiscount(discount);
                        binding.flipper.setDisplayedChild(6);
                        break;
                }
                applyStep(discount.getStep());
            }

            private void commit() {
                switch (discount.getStep()) {
                    case 1:

                        discount = step1Fragment.getDiscount();
                        break;
                    case 2:
                        discount = step2Fragment.getDiscount();
                        break;
                    case 3:
                        discount = step3Fragment.getDiscount();
                        break;
                    case 4:
                        discount = step4Fragment.getDiscount();
                        break;
                    case 5:
                        discount = step5Fragment.getDiscount();
                        break;
                    case 6:
                        discount = step6Fragment.getDiscount();
                        break;
                    case 7:
                        discount = step7Fragment.getDiscount();
                        break;
                }

                if (!progressBarDialog.isShowing()) progressBarDialog.show();

                OnSuccess<Discount> successListener = response -> activity.runOnUiThread(() -> {
                    discount = response;

                    if (discount.getStep() == 7) {
                        finished();
                        return;
                    }

                    if (discount.getStep() == 4 && !steps.contains(response.getTarget())) {
                        discount.setStep(6);
                    } else if (discount.getStep() == 2 && discount.getType().equals("direct")) {
                        discount.setStep(4);
                    } else {
                        discount.setStep(discount.getStep() + 1);
                    }

                    next();
                });
                OnSuccess<ErrorHandler> failedListener = response -> activity.runOnUiThread(() -> {
                    switch (discount.getStep()) {
                        case 1:
                            step1Fragment.setErrors(response);
                            break;
                        case 2:
                            step2Fragment.setErrors(response);
                            break;
                        case 3:
                            step3Fragment.setErrors(response);
                            break;
                        case 4:
                            step4Fragment.setErrors(response);
                            break;
                        case 5:
                            step5Fragment.setErrors(response);
                            break;
                        case 6:
                            step6Fragment.setErrors(response);
                            break;
                        case 7:
                            step7Fragment.setErrors(response);
                            break;
                    }
                });
                OnSuccess<Boolean> finallyListener = response -> activity.runOnUiThread(() -> {
                    if (progressBarDialog.isShowing()) progressBarDialog.dismiss();
                });
                UploadRequest.UploadCallbacks uploadListener = percentage -> Log.e("UploadCallbacks", "percentage: " + percentage);

                if (discount.getStep() == 1) {
                    if (discount.getCaption() == null ||
                            discount.getDiscount() == null ||
                            discount.getPrice_max() == null ||
                            discount.getFile() == null) {
                        Toast.makeText(activity, "ابتدا اطلاعات فرم را تکمیل کنید", Toast.LENGTH_LONG).show();
                        finallyListener.onSuccess(false);
                        return;
                    }
                    repository.step1(discount, successListener, failedListener, finallyListener, uploadListener);
                } else
                    repository.store(discount, successListener, failedListener, finallyListener);
            }

            public void finished() {
                Toast.makeText(activity, "درخواست صدور تخفیف با موفقت ارسال شد", Toast.LENGTH_LONG).show();
                discount = new Discount();
                discount.setShop_id(shopId);
                discount.setStep(1);
                next();
            }

            public void applyStep(int step) {
                Drawable grayEa = ContextCompat.getDrawable(activity, R.drawable.circle_4a);
                Drawable orange = ContextCompat.getDrawable(activity, R.drawable.circle_orange);

                int orangeColor = ContextCompat.getColor(activity, R.color.colorAccent);
                int grayColor = ContextCompat.getColor(activity, R.color._4a);

                int dark = ContextCompat.getColor(activity, R.color._80);
                int light = ContextCompat.getColor(activity, R.color.white);

                if (step >= 1) {

                    binding.tvStep1.setTextColor(light);
                    binding.tvStep1.setBackground(orange);
                } else {
                    binding.tvStep1.setTextColor(dark);
                    binding.tvStep1.setBackground(grayEa);
                }

                if (step >= 2) {
                    binding.tvStep2.setTextColor(light);
                    binding.tvStep2.setBackground(orange);
                    binding.viewStep1.setBackgroundColor(orangeColor);
                } else {
                    binding.tvStep2.setTextColor(dark);
                    binding.tvStep2.setBackground(grayEa);
                    binding.viewStep1.setBackgroundColor(grayColor);
                }

                if (step >= 3) {
                    binding.tvStep3.setTextColor(light);
                    binding.tvStep3.setBackground(orange);
                    binding.viewStep2.setBackgroundColor(orangeColor);
                } else {
                    binding.tvStep3.setTextColor(dark);
                    binding.tvStep3.setBackground(grayEa);
                    binding.viewStep2.setBackgroundColor(grayColor);
                }

                if (step >= 4) {
                    binding.tvStep4.setTextColor(light);
                    binding.tvStep4.setBackground(orange);
                    binding.viewStep3.setBackgroundColor(orangeColor);
                } else {
                    binding.tvStep4.setTextColor(dark);
                    binding.tvStep4.setBackground(grayEa);
                    binding.viewStep3.setBackgroundColor(grayColor);
                }

                if (step >= 5) {
                    binding.tvStep5.setTextColor(light);
                    binding.tvStep5.setBackground(orange);
                    binding.viewStep4.setBackgroundColor(orangeColor);
                } else {
                    binding.tvStep5.setTextColor(dark);
                    binding.tvStep5.setBackground(grayEa);
                    binding.viewStep4.setBackgroundColor(grayColor);
                }

                if (step >= 6) {
                    binding.tvStep6.setTextColor(light);
                    binding.tvStep6.setBackground(orange);
                    binding.viewStep5.setBackgroundColor(orangeColor);
                } else {
                    binding.tvStep6.setTextColor(dark);
                    binding.tvStep6.setBackground(grayEa);
                    binding.viewStep5.setBackgroundColor(grayColor);
                }

                if (step >= 7) {
                    binding.tvStep7.setTextColor(light);
                    binding.tvStep7.setBackground(orange);
                    binding.viewStep6.setBackgroundColor(orangeColor);
                } else {
                    binding.tvStep7.setTextColor(dark);
                    binding.tvStep7.setBackground(grayEa);
                    binding.viewStep6.setBackgroundColor(grayColor);
                }
            }

            @Override
            public void onRequestPermissionsResult(int requestCode, @NotNull String[] permissions, @NotNull int[] grantResults) {
                super.onRequestPermissionsResult(requestCode, permissions, grantResults);
                EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
            }

            @Override
            public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
                super.onActivityResult(requestCode, resultCode, data);
            }
        }

Эй, у меня есть 7 фрагментов, и следующая кнопка работает хорошо, но BtnBck нет! Когда я нажимаю следующую кнопку, она переходит к следующему фрагменту, но ничего не происходит, когда я нажимаю кнопку «Назад». Я пробовал каждый метод в более старых темах, таких как popBackStack et c. но ни один из них не сработал. Я также написал метод, отозванный для него, но он не сработал. Я использую MVVM в своем проекте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...