"Can not perform this action after onSaveInstanceState" 旋转设备后异常

"Can not perform this action after onSaveInstanceState" exception after rotate device

我有一个 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. 调用方中添加checkFingerprintAuthentication()方法Class:

    void checkFingerprintAuthentication() {
        FingerprintDialogFragment fingerprintDialogFragment = FingerprintDialogFragment.getInstance(this);
        fingerprintDialogFragment.show(getActivity().getSupportFragmentManager(), FINGERPRINT_DIALOG_TAG);
    }
    
  2. 将 Caller Class 作为参数发送给 View Holder 并调用 checkFingerprintAuthentication():

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

问题解决了! :)