tl; dr: বন্ধ করার সঠিক উপায় হ'ল ডায়ালগফ্রেগমেন্টে সরাসরিDialogFragment
ব্যবহার ।dismiss()
বিশদ : ডায়ালগফ্র্যাগমেন্ট রাজ্যের ডকুমেন্টেশন
কথোপকথনের নিয়ন্ত্রণ (কখন এটি প্রদর্শন করবেন, লুকিয়ে রাখবেন, বরখাস্ত করবেন তা সিদ্ধান্ত নেবেন) ডায়ালগটিতে সরাসরি কল দিয়ে নয়, এখানে এপিআইয়ের মাধ্যমে করা উচিত।
সুতরাং, আপনার ব্যবহার করা উচিত নয় getDialog().dismiss()
, যেহেতু dismiss()
এটি ডায়ালগটিতে অনুরোধ করবে । পরিবর্তে, আপনাকে dismiss()
ডায়ালগফ্রেগমেন্টের পদ্ধতিটি নিজেই ব্যবহার করা উচিত :
সর্বজনীন শূন্য বরখাস্ত ()
খণ্ড এবং এর কথোপকথনটি খারিজ করুন। যদি খণ্ডটি পিছনের স্ট্যাকটিতে যুক্ত করা হয় তবে সমস্ত এ্যাক স্ট্রাকাল স্ট্যাক স্টেট এবং এই এন্ট্রি সহ পপ করা হবে। অন্যথায়, খণ্ডটি সরানোর জন্য একটি নতুন লেনদেন প্রতিশ্রুতিবদ্ধ হবে।
আপনি দেখতে পাচ্ছেন, এটি কেবল কথোপকথনটি বন্ধ করার ক্ষেত্রেই নয়, প্রক্রিয়াতে জড়িত খণ্ডের লেনদেন পরিচালনা করারও যত্ন নেয়।
আপনার কেবলমাত্র onStop
যদি ব্যবহারের দরকার হয় তবে আপনি যদি স্পষ্টভাবে এমন কোনও সংস্থান তৈরি করেন যার জন্য ম্যানুয়াল ক্লিনআপের প্রয়োজন হয় (ফাইলগুলি বন্ধ করা, কার্সার বন্ধ করা ইত্যাদি)। তারপরেও আমি অন্তর্নিহিত ডায়ালগের onStop
চেয়ে ডায়ালগফ্র্যাগমেন্টকে ওভাররাইড করব onStop
।