كيفية استبعاد DialogFragment عند الضغط خارج مربع الحوار؟
سؤال
أنا أستخدم أ DialogFragment
, ، وبينما قمت بتعيين صورة لإغلاقها بنجاح (على سبيل المثال،رفض) مربع الحوار عند الضغط عليه، أجد صعوبة في العثور على طريقة لتجاهل مربع الحوار عندما ينقر المستخدم في أي مكان خارجه، تمامًا كما هو الحال مع مربعات الحوار العادية.اعتقدت أنه سيكون هناك نوع من
dialogFragment.setCanceledOnTouchOutside(true);
اتصل، لكني لا أرى ذلك في الوثائق.
هل هذا ممكن مع DialogFragment
على الاطلاق؟أم أنني أبحث في الأماكن الخاطئة؟لقد حاولت اعتراض أحداث اللمس في نشاط "الوالدين"، لكن بصرف النظر عن عدم الحصول على أي حدث لمس، لم يبدو ذلك صحيحًا بالنسبة لي.
المحلول
يجب استدعاؤها في رمز الترقيم العام (كما أشار Apurv Gupta).
نصائح أخرى
هناك الكثير من الإجابات هنا، ولكن يتعطل التطبيق عند فتح مربع الحوار.كتابة getDialog().setCanceledOnTouchOutside(true);
داخل onCreateView
لم تنجح وتحطمت التطبيق الخاص بي.
(انا استخدم AppCompatActivity
كنشاطي الأساسي و android.app.DialogFragment
مثل شظيتي).
ما يعمل هو أحد السطرين التاليين:
getDialog().setCanceledOnTouchOutside(true);
أو
this.getDialog().setCanceledOnTouchOutside(true);
داخل onActivityCreated
يحب
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
//getDialog().getWindow().getAttributes().windowAnimations = R.style.DialogAnimationZoom;
//getDialog().getWindow().setDimAmount(0.85f);
getDialog().setCanceledOnTouchOutside(true);//See here is the code
}
ما لا يجب استخدامه:
DialogFragment.getDialog().setCanceledOnTouchOutside(false);
يلقي الخطأ التالي
وكتابة الكود فيه onCreateView
تعطل التطبيق!يرجى تحديث الإجابة إذا وجدت شيئا خاطئا.
كان خطأ في الكتابة.كان لي نفس المشكلة.يعمل هذا بشكل جيد مع Java و Mono لنظام Android. Mono سيكون:
Genacodicetagpreأوصي باستخدام الحل فقط بعد تجربة الحلول المذكورة أعلاه.لقد وصفت الحل الذي أقدمه هنا .فقط للإيجاز ، أنا أتحقق من حدود اللمس لـ DialogFragment.getView ().عندما تكون نقاط الاتصال خارج DialogFragment ، فأنا أرفض مربع الحوار.
عملت لدي
الرمز الخاص بي
Genacodicetagpre