mirror of
https://github.com/Tencent/QMUI_Android.git
synced 2026-10-18 21:21:01 +08:00
add dismiss protection.
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user