onActivityCreated вызывается всякий раз, когда нажимается toggleButton - PullRequest
0 голосов
/ 11 ноября 2018

У меня есть кнопка-переключатель во фрагменте, инициализированном внутри класса адаптера, и она работает как кнопка списка избранного, которая добавляет продукт в базу данных Firebase, если на него нажимают, и удаляет его при повторном нажатии.

addToCart.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if (customer.userId != null) {
                mFirebaseDatabase = FirebaseDatabase.getInstance();
                mCustomerRefernce = mFirebaseDatabase.getReference().child("Favorite").child(customer.userId);
                cmObej = getItem(position);
                if (isChecked) {
                    mCustomerRefernce.child(cmObej.getId()).setValue(true);
                    addToCart.setBackgroundDrawable(ContextCompat.getDrawable(getContext(), R.drawable.ic_filledstar_blue2_24dp));
                } else {
                    mCustomerRefernce.child(cmObej.getId()).removeValue();
                    addToCart.setBackgroundDrawable(ContextCompat.getDrawable(getContext(), R.drawable.ic_star_border_blue2_24dp));
                }
            }else{
                new AlertDialog.Builder(getContext())
                        .setTitle("Alert")
                        .setMessage("Can't add to the list, do you want to sign in?")
                        .setCancelable(true)
                        .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                Intent i = new Intent(getContext(), Signin2.class);
                                getContext().startActivity(i); }
                        }).setNegativeButton("No", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {

                    }
                }).show();
            }
        }
    });

Проблема в том, что всякий раз, когда он щелкает, новое действие инициализируется, как вы видите здесь

V/FA: Activity paused, time: 9574193
V/FA: onActivityCreated
V/FA: Activity resumed, time: 9574270 

Как вы думаете, в чем проблема?

1 Ответ

0 голосов
/ 12 ноября 2018

Когда диалог появляется поверх существующего действия, тогда существующее действие переходит в частично невидимое состояние , вызывая onPause().

Если пользователь возвращается к вашей активности из приостановленного состояния (в данном случае это закрытое диалоговое окно), система возобновляет ее и вызывает метод onResume().

Ваша активность встраивает фрагмент, onActivityCreated будет вызываться при возобновлении активности.

...