add dismiss protection.

This commit is contained in:
cgspine
2020-10-21 13:15:35 +08:00
parent 0397b84fb2
commit 0efd052ec2
2 changed files with 30 additions and 8 deletions
@@ -16,19 +16,21 @@
package com.qmuiteam.qmui.widget.dialog;
import android.app.Activity;
import android.content.Context;
import android.content.ContextWrapper;
import android.content.res.TypedArray;
import android.view.LayoutInflater;
import android.view.Window;
import com.qmuiteam.qmui.skin.QMUISkinLayoutInflaterFactory;
import com.qmuiteam.qmui.skin.QMUISkinManager;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatDialog;
import androidx.core.view.LayoutInflaterCompat;
import com.qmuiteam.qmui.skin.QMUISkinLayoutInflaterFactory;
import com.qmuiteam.qmui.skin.QMUISkinManager;
public class QMUIBaseDialog extends AppCompatDialog {
boolean cancelable = true;
private boolean canceledOnTouchOutside = true;
@@ -112,4 +114,24 @@ public class QMUIBaseDialog extends AppCompatDialog {
}
return canceledOnTouchOutside;
}
@Override
public void dismiss() {
Context context = getContext();
if(context instanceof ContextWrapper){
context = ((ContextWrapper)context).getBaseContext();
}
if(context instanceof Activity){
Activity activity = (Activity) context;
if(activity.isDestroyed() || activity.isFinishing()){
return;
}
super.dismiss();
}else{
try{
super.dismiss();
}catch (Throwable ignore){
}
}
}
}
@@ -19,13 +19,13 @@ package com.qmuiteam.qmui.widget.dialog;
import android.view.View;
import android.view.ViewGroup;
import java.util.ArrayList;
import java.util.List;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
import java.util.List;
public class QMUIBottomSheetListAdapter extends RecyclerView.Adapter<QMUIBottomSheetListAdapter.VH> {
public static final int ITEM_TYPE_HEADER = 1;
@@ -124,14 +124,14 @@ public class QMUIBottomSheetListAdapter extends RecyclerView.Adapter<QMUIBottomS
return mData.size() + (mHeaderView != null ? 1 : 0) + (mFooterView != null ? 1 : 0);
}
static class VH extends RecyclerView.ViewHolder {
public static class VH extends RecyclerView.ViewHolder {
public VH(@NonNull View itemView) {
super(itemView);
}
}
interface OnItemClickListener {
public interface OnItemClickListener {
void onClick(VH vh, int dataPos, QMUIBottomSheetListItemModel model);
}
}