"Не удается выполнить это действие после onSaveInstanceState" исключение после поворота устройства

У меня есть ViewHolder и в методе bindView() установить OnLongClickListener.

Когда я поворачиваю устройство и долго нажимаю на элемент списка java.lang.IllegalStateException: не могу выполнить это действие после возникновения исключения onSaveInstanceState.

Я уже переопределил метод show() и протестировал commitAllowingStateLoss, но все еще получаю исключение.

Кто-нибудь может мне помочь?

public void bindView(final FragmentActivity activity) {

    ...

    itemView.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            FingerprintDialogFragment fingerprintDialogFragment = FingerprintDialogFragment.getInstance(DecreeItemViewHolder.this);
            fingerprintDialogFragment.show(activity.getSupportFragmentManager(), FINGERPRINT_DIALOG_TAG);

            return true;
        });
    }
}

1 ответ

Решение

Я решил проблему делегированием...

  1. Добавьте метод checkFingerprintAuthentication() в класс вызывающих:

    void checkFingerprintAuthentication() {
        FingerprintDialogFragment fingerprintDialogFragment = FingerprintDialogFragment.getInstance(this);
        fingerprintDialogFragment.show(getActivity().getSupportFragmentManager(), FINGERPRINT_DIALOG_TAG);
    }
    
  2. Отправьте класс вызывающего в качестве параметра View Holder и вызовите checkFingerprintAuthentication():

    public void bindView(final DecreeCartableController cartableController) {
        ...
    
        itemView.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                cartableController.checkFingerprintAuthentication();
                return true;
           }
       });
    }
    

задача решена!:)

Другие вопросы по тегам