ফ্র্যাগমেন্ট এবং ফ্র্যাগমেন্টএকটিভিটির মধ্যে পার্থক্য কী?


160

আমার প্রশ্ন পৃথক্ সুস্পষ্ট উত্তরাধিকার পার্থক্য থেকে, মধ্যে মূল পার্থক্য কি কি Fragmentএবং FragmentActivity? প্রতিটি শ্রেণীর কোন পরিস্থিতিতে সবচেয়ে উপযুক্ত? এই ক্লাস দুটি কেন বিদ্যমান তা বোঝার চেষ্টা করছি ...

উত্তর:


280

Fragmentএকটি এর একটি বিভাগ Activityযা রয়েছে:

  • তার নিজস্ব জীবনচক্র
  • নিজস্ব ইনপুট ইভেন্টগুলি গ্রহণ করে
  • Activityচলমান অবস্থায় যোগ বা সরিয়ে ফেলা যায় ।

একটি Fragmentঅবশ্যই সর্বদা এম্বেড থাকা উচিত Activity

Fragmentsহানিকম্বের পূর্বে API এর অংশ নয় (3.0) 3.0 আপনি যদি Fragmentsহানিকম্বের আগে প্ল্যাটফর্ম সংস্করণকে লক্ষ্য করে একটি অ্যাপ্লিকেশন ব্যবহার করতে চান তবে আপনাকে আপনার প্রকল্পে সমর্থন প্যাকেজ যুক্ত করতে হবে এবং এটি FragmentActivityধরে রাখতে ব্যবহার করতে হবে FragmentsFragmentActivityবর্গ মোকাবেলার জন্য একটি API হয়েছে Fragments, যেহেতু Activityবর্গ, Honeycomb আগে, না।

যদি আপনার প্রকল্পটি কেবল হানিকম্বকে বা আরও নতুনকে লক্ষ্য করে চলেছে তবে আপনার ব্যবহার করা উচিত Activityএবং FragmentActivityএটি রাখা উচিত নয় Fragments

কিছু বিশদ:

ব্যবহার করুন android.app.Fragmentসঙ্গে Activity। ব্যবহার করুন android.support.v4.app.Fragmentসঙ্গে FragmentActivityFragmentএকটি সমর্থন প্যাকেজ যোগ করবেন নাActivity যেমন কারণ হবে একটি ব্যতিক্রম নিক্ষেপ করা হবে।

সাবধান হওয়ার মতো একটি জিনিস: FragmentManagerএবং LoaderManagerফ্র্যাগমেন্টএটিভিটির জন্য পৃথক সমর্থন সংস্করণ রয়েছে:

আপনি যদি Fragmentকোনও Activity(হানিকম্ব এবং তার উপরে) ব্যবহার করে থাকেন তবে কল করুন

  • getFragmentManager() পেতে android.app.FragmentManager
  • getLoaderManager() পেতে android.app.LoaderManager

আপনি যদি Fragmentকোনও FragmentActivity(প্রাক-হানিকম্ব) ব্যবহার করে থাকেন তবে কল করুন:

  • getSupportFragmentManager()পেতে android.support.v4.app.FragmentManager
  • getSupportLoaderManager() পেতে android.support.v4.app.LoaderManager

তাই হয়, না কি

//don't do this
myFragmentActivity.getLoaderManager(); 
//instead do this:
myFragmentActivity.getSupportLoaderManager();

অথবা

//don't do this:
android.app.FragmentManager fm = myFragmentActivity.getSupportFragmentManager();
//instead do this:
android.support.v4.app.FragmentManager fm = myFragmentActivity.getSupportFragmentManager()

এটি জানার জন্যও দরকারী যে কোনও খণ্ডটি এমবেড থাকা অবস্থায় Activityএটি Activityবিন্যাসের অংশ হতে হবে না । এটি ক্রিয়াকলাপের জন্য একটি অদৃশ্য কর্মী হিসাবে ব্যবহার করা যেতে পারে যার নিজস্ব কোনও ইউআই নেই।


6
তবে কোনও খণ্ডকে ক্রিয়াকলাপের বিন্যাসের অংশ হওয়ার প্রয়োজন হয় না; আপনি ক্রিয়াকলাপের জন্য অদৃশ্য কর্মী হিসাবে তার নিজস্ব ইউআই ছাড়াই কোনও টুকরোও ব্যবহার করতে পারেন।
uzay95

1
@ uzay95 এটি নির্দেশ করার জন্য ধন্যবাদ। আমি উল্লেখ করার জন্য শেষে একটি বিভাগ যুক্ত করেছি।
গুনার কার্লসন

@ গুন্নার কার্লসন আমরা কি খণ্ড খণ্ডকে ক্রিয়াকলাপে যোগ করব?
ধসনীম 25'13

2
@ ধাসনীম আপনি যদি আপনার অ্যাপ্লিকেশনটি 3.0 এর চেয়ে কম অ্যান্ড্রয়েড সংস্করণে কাজ করতে চান তবে আপনি একটি টুকরোটি অ্যাক্টিভিটিতে একটি টুকরো যোগ করুন। অন্যথায় আপনি একটি ক্রিয়াকলাপে একটি টুকরো যোগ করেন।
গুনার কার্লসন

2
ধন্যবাদ! এটি আমার সমস্যার সমাধান! এখন আমি জানি যে আমার অ্যাপ (ক্রিয়াকলাপের সাথে লিখিত) কেন সর্বদা ফেসবুক লগইন বোতাম যুক্ত করার পরে অনক্রিটে ক্রাশ হয় (তারা উদাহরণে android.support.v4.app.Fraament ব্যবহার করে)। অবশ্যই ক্র্যাশ হওয়ার অন্যান্য কারণও রয়েছে। তবে আপনার উত্তর তাদের একসাথে রাখার চূড়ান্ত টুকরো।
ক্লিন্ড

14

ফ্র্যাগমেন্টএটিভিটি হ'ল টুকরো টুকরো সমর্থন সহ আমাদের ক্লাসিক ক্রিয়াকলাপ more অতএব ফ্রেগমেন্টএটিভিটি দরকার, যখন কোনও খণ্ড ক্রিয়াকলাপের সাথে সংযুক্ত থাকে।

ওয়েল ফ্র্যাগমেন্ট হ'ল ভাল উপাদান যা ক্রিয়াকলাপের মৌলিক আচরণগুলি অনুলিপি করে, তবুও ক্রিয়াকলাপের মতো স্থায়ী একক অ্যাপ্লিকেশন উপাদান নয় এবং কাজ করার জন্য ক্রিয়াকলাপের সাথে সংযুক্ত থাকা প্রয়োজন।

দেখুন এখানে আরো বিস্তারিত জানার জন্য


1
বিটিডাব্লু, মেয়াদোত্তীর্ণ উত্তর, যা কেবলমাত্র এপিআই ১১ এর চেয়ে পুরানো ডিভাইসে কাজ করতে ইচ্ছুক অ্যাপ্লিকেশনগুলিতে প্রযোজ্য
টুলমেকারস্টেভ

@ টুলমেকারস্টেভ আপনি কি আরও বিশদ সরবরাহ করতে পারবেন? যদি সম্ভব হয় তবে আপনি উত্তরটি আপ টু ডেট সংস্করণ দিয়ে সম্পাদনা করতে পারবেন?
Ghankhan Barış Aker

8

ফ্র্যাগমেন্টএকটিভিটিকে একটি নিয়মিত ক্রিয়াকলাপ হিসাবে ভাবেন যা খণ্ডগুলিকে সমর্থন করতে পারে। মধুচক্রের পূর্বে একটি ক্রিয়াকলাপ শ্রেণি সরাসরি টুকরোগুলিকে সমর্থন করতে পারে না, তাই খণ্ডগুলি ব্যবহার করে এমন ক্রিয়াকলাপগুলিতে এটি প্রয়োজন।

যদি আপনার টার্গেট বিতরণ হানিকম্ব হয় এবং এর বাইরে আপনি এর পরিবর্তে ক্রিয়াকলাপ বন্ধ করতে পারেন।

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


1

একটি ফ্র্যাগমেন্টএটিভিটি হ'ল একটি অ্যাড-হক ক্রিয়াকলাপ যাতে ফ্রেগমেন্ট থাকে। এই কয়েকটি কথায় আমি আপনাকে একটি প্রধান গুরুত্বপূর্ণ পরিবর্তন ব্যাখ্যা করেছি যা অ্যান্ড্রয়েড 3.0.০ (হানিকম্ব) এর সাথে অ্যান্ড্রয়েড দল অ্যান্ড্রয়েড এসডিকে প্রবেশ করিয়েছে।

এই নতুন ধরণের ধারণার সাথে আপনার কোড এবং লেআউটের টুকরা আরও নমনীয় এবং রক্ষণাবেক্ষণযোগ্য হয়ে ওঠে। আপনি যদি গুগলে অনুসন্ধান করেন তবে প্রচুর উদাহরণ রয়েছে।

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