অ্যান্ড্রয়েডে ফ্র্যাগমেন্টম্যানেজারের সাথে কাজ করার জন্য দরকারী নকশার নিদর্শন


10

খণ্ডগুলির সাথে কাজ করার সময়, আমি স্থিতিশীল পদ্ধতির সমন্বয়ে একটি শ্রেণি ব্যবহার করি যা টুকরোগুলিতে ক্রিয়া সংজ্ঞায়িত করে। প্রদত্ত যে কোনও প্রকল্পের জন্য, আমার কাছে একটি ক্লাস বলা হতে পারে FragmentActions, যার মধ্যে নিম্নলিখিতগুলির মতো পদ্ধতি রয়েছে:

public static void showDeviceFragment(FragmentManager man){
    String tag = AllDevicesFragment.getFragmentTag();

    AllDevicesFragment fragment = (AllDevicesFragment)man.findFragmentByTag(tag);

    if(fragment == null){
        fragment = new AllDevicesFragment();
    }

    FragmentTransaction t = man.beginTransaction();
    t.add(R.id.main_frame, fragment, tag);

    t.commit();
}

আমার কাছে অ্যাপ্লিকেশন স্ক্রিনে সাধারণত একটি পদ্ধতি থাকে। আমি যখন ছোট স্থানীয় ডাটাবেসগুলি (সাধারণত এসকিউএলাইট) নিয়ে কাজ করি তখন আমি এটির মতো কিছু করি তাই আমি এটি টুকরো টুকরো টুকরোয় প্রয়োগ করেছিলাম যা মনে হয় একই রকম ওয়ার্কফ্লো রয়েছে; যদিও আমি এর সাথে বিবাহিত নই।

আপনি কীভাবে আপনার অ্যাপ্লিকেশনগুলিকে ফ্রেগমেন্টস এপিআইয়ের সাথে ইন্টারফেস করতে সংগঠিত করেছেন এবং আপনার কী মনে হয় যে এটি প্রয়োগ করে?


1
সব ধরণের খণ্ড দেখানোর জন্য আপনার কেন এক শ্রেণি দায়বদ্ধ? এটি ভিতরে খণ্ড শ্রেণীর অভ্যন্তরে স্থির পদ্ধতি হওয়া উচিত নয়?
পাইওটার

উত্তর:


3

স্বীকৃত প্যাটার্নটি হ'ল আপনার কাস্টম খণ্ড শ্রেণীর অভ্যন্তরে একটি কারখানা পদ্ধতি থাকা (সাধারণত নিউইনস্ট্যান্স () তবে ওহে ডিলারের পছন্দ)। সুতরাং আপনার খণ্ড শ্রেণীর কিছু দেখতে এমন হওয়া উচিত:

public class MyFragment extends Fragment
{
    public static MyFragment newInstance()
    {
        MyFragment newFragment = new MyFragment();
        // add any bundle arguments here if needed
        return newFragment;
    }
    // rest of fragment class...
}

তারপরে, যখন আপনি কোনও খণ্ড তৈরি করেন এবং এটি ব্যাকস্ট্যাকে যোগ করার পরিবর্তে:

মাইফ্রেগমেন্ট খণ্ড = নতুন মাইফ্রেগমেন্ট ();

আপনি 'নতুন' কীওয়ার্ডের পরিবর্তে কারখানার পদ্ধতিটি ব্যবহার করতে পারেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.