দ্বিধা: ক্রিয়াকলাপ বনাম ক্রিয়াকলাপগুলি কখন ব্যবহার করবেন:


785

আমি জানি যে Activitiesআমার অ্যাপ্লিকেশনটির একটি একক পর্দার প্রতিনিধিত্ব করার Fragmentsজন্য ডিজাইন করা হয়েছে , যখন তাদের ভিতরে যুক্ত যুক্ত যুক্তিযুক্ত পুনরায় ব্যবহারযোগ্য ইউআই লেআউট হিসাবে নকশাকৃত।

খুব বেশি দিন আগে না হওয়া পর্যন্ত, আমি একটি অ্যাপ্লিকেশন বিকাশ করেছি কারণ এটি বলেছিল যে সেগুলি বিকাশ করা উচিত। আমি Activityআমার অ্যাপ্লিকেশনটির একটি স্ক্রিন উপস্থাপন করার জন্য একটি তৈরি করেছি এবং এর জন্য ViewPagerবা ফ্রেমের জন্য ব্যবহার করেছি Google Maps। আমি খুব কমই একটি ListFragmentবা অন্য ইউআই তৈরি করেছি যা বেশ কয়েকবার ব্যবহার করা যেতে পারে।

সম্প্রতি আমি এমন একটি প্রকল্পে হোঁচট খেয়েছি যেখানে কেবল 2 টি Activitiesএকটি SettingsActivityএবং অন্যটি হ'ল MainActivity। এর লেআউটটি MainActivityঅনেকগুলি লুকানো পূর্ণ পর্দার UI টুকরা দিয়ে জনবহুল এবং কেবল একটিতে প্রদর্শিত হয়। ইন Activityযুক্তিবিজ্ঞান অনেক আছে FragmentTransitionsআবেদন বিভিন্ন পর্দা মধ্যে।

এই পদ্ধতির সম্পর্কে আমি যা পছন্দ করেছি তা হ'ল অ্যাপ্লিকেশনটি একটি ব্যবহার করে ActionBar, এটি অক্ষত থাকে এবং স্ক্রিন স্যুইচিং অ্যানিমেশনটি নিয়ে সরে যায় না, যা Activityস্যুইচিংয়ের সাথে ঘটে । এটি সেই পর্দার স্থানান্তরগুলিকে আরও সাবলীল অনুভূতি দেয়।

সুতরাং আমি অনুমান করি যে আমি এই বিষয়ে আপনার বর্তমান বিকাশের পদ্ধতিটি ভাগ করে নেওয়ার জন্য জিজ্ঞাসা করছি, আমি জানি এটি প্রথম দৃষ্টিভঙ্গিতে একটি মতামত ভিত্তিক প্রশ্নের মতো দেখতে পারে তবে আমি এটিকে অ্যান্ড্রয়েড ডিজাইন এবং আর্কিটেকচার প্রশ্ন হিসাবে দেখি ... আসলেই এটি নয় মতামত ভিত্তিক এক।

আপডেট (01.05.2014): স্কয়ার থেকে এরিক বার্কের এই উপস্থাপনাটি অনুসরণ করার পরে , (যা আমি বলতে চাই যে অ্যান্ড্রয়েড বিকাশকারীদের জন্য প্রচুর উপকারী সরঞ্জামগুলির সাথে একটি দুর্দান্ত উপস্থাপনা Squ এবং আমি স্কয়ারের সাথে কোনওভাবেই সম্পর্কিত নই)

http://www.infoq.com/presentations/Android-Design/

বিগত কয়েক মাস ধরে আমার ব্যক্তিগত অভিজ্ঞতা থেকে, আমি জানতে পেরেছি যে আমার অ্যাপ্লিকেশনগুলি তৈরির সর্বোত্তম উপায় হ'ল টুকরোগুলির গোষ্ঠী তৈরি করা যা অ্যাপ্লিকেশনটিতে একটি প্রবাহকে উপস্থাপন করতে আসে এবং সেই সমস্ত খণ্ডকে একটিতে উপস্থাপন করে Activity। সুতরাং মূলত Activitiesআপনার প্রয়োগে প্রবাহের সংখ্যার সমান সংখ্যা থাকবে । এইভাবে অ্যাকশন বারটি সমস্ত প্রবাহের পর্দার উপর অক্ষত থাকে, তবে একটি প্রবাহ পরিবর্তন করে পুনরায় তৈরি করা হয় যা প্রচুর অর্থবোধ করে। যেমন এরিক বার্ক বলেছেন এবং আমি যেমন বুঝতে পেরেছি, যত কম Activitiesসম্ভব ব্যবহারের দর্শন সমস্ত পরিস্থিতিতে প্রযোজ্য নয় কারণ এটি "Godশ্বর" কার্যকলাপকে কলুষিত করে তোলে।


2
আমার পোস্টটি এসওতে দেখুন
মাই গড

উত্তর:


270

বিশেষজ্ঞরা আপনাকে বলবেন: "আমি যখন ইউআই দেখি, তখন আমি জানব যে একটি Activityবা একটি ব্যবহার করব কিনা Fragment"। শুরুতে এটির কোনও ধারণা থাকবে না তবে সময়ের সাথে সাথে আপনার প্রয়োজন হবে কিনা তা আপনি আসলেই বলতে সক্ষম হবেন Fragment

একটি ভাল অনুশীলন আমার পক্ষে খুব সহায়ক বলে মনে হয়েছে। আমি আমার মেয়েকে কিছু বোঝানোর চেষ্টা করার সময় এটি আমার কাছে ঘটেছিল।

যথা, এমন একটি বক্স কল্পনা করুন যা কোনও স্ক্রিন উপস্থাপন করে। আপনি এই বাক্সে অন্য পর্দা লোড করতে পারেন? আপনি যদি একটি নতুন বাক্স ব্যবহার করেন, তবে আপনাকে কি ১ ম বাক্স থেকে একাধিক আইটেম অনুলিপি করতে হবে? যদি উত্তর হ্যাঁ হয়, তবে আপনার ব্যবহার করা উচিত Fragments, কারণ Activityমূলগুলি সমস্ত অনুলিপি উপাদানগুলি তৈরি করতে আপনাকে সময় বাঁচাতে পারে এবং আপনি কেবল বাক্সের কিছু অংশ প্রতিস্থাপন করতে পারেন।

তবে ভুলে যাবেন না যে আপনার সর্বদা একটি বক্স ধারক প্রয়োজন ( Activity) বা আপনার অংশগুলি ছড়িয়ে দেওয়া হবে। তাই ভিতরে ভিতরে একটি বাক্স।

বক্সটির অপব্যবহার না করার বিষয়ে খেয়াল রাখুন। অ্যান্ড্রয়েড ইউএক্স বিশেষজ্ঞরা পরামর্শ দিন (আপনি এগুলি ইউটিউবে খুঁজে পেতে পারেন) যখন আমাদের স্পষ্টভাবে অন্যটি লোড করা উচিত Activity, পরিবর্তে একটি ব্যবহার করার জন্য Fragment(যেমন আমরা নেভিগেশন ড্রয়ারের সাথে বিভাগ করি যেখানে এরকম হয়)। আপনি একবারে স্বাচ্ছন্দ্য বোধ করলে আপনি Fragmentsতাদের সমস্ত ভিডিও দেখতে পারেন। আরও বেশি তারা বাধ্যতামূলক উপাদান।

আপনি এখনই আপনার ইউআইটি দেখতে পারেন এবং যদি আপনার একটি Activityবা একটি দরকার হয় তবে তা বের করতে পারেন Fragment? আপনি কি নতুন দৃষ্টিকোণ পেয়েছেন? আমি মনে করি আপনি করেছেন।


4
আপনার উল্লিখিত ইউটিউব ফিডের কি কোনও লিঙ্ক আছে? আমি "অ্যান্ড্রয়েড ইউএক্স বিশেষজ্ঞ" এবং "অ্যান্ড্রয়েড ইউএক্স" অনুসন্ধান করি তবে আপনি কোন ভিডিওগুলির বিষয়ে কথা বলছেন তা সম্পূর্ণরূপে নিশ্চিত নই।
আমি--

2
আর কোনও নয়, এক বছর আগে দেখেছি। ইউএক্স
স্যান্ডালোন

1
বিবেচনার একটি উদাহরণ: ক্রিয়াকলাপের প্যারেন্টঅ্যাক্টিভিটি রয়েছে যাতে বিজ্ঞপ্তি থেকে প্রবেশের সময় আমরা ব্যাকস্ট্যাকটি সংশ্লেষ করতে পারি, তবে আমি মনে করি না এরকম প্যারেন্টফ্রেগমেন্ট রয়েছে।
fikr4n

: @BornToCode সেখানে getParentFragment হয় developer.android.com/reference/android/support/v4/app/...
ToolmakerSteve

@ টুলমেকারস্টেভ হ্যাঁ এটি পিতামাতা ফ্রেমমেন্ট, তবে এটি আমি কী বোঝাতে চাইছি না, ডেভেলপার
andঅ্যান্ড্রয়েড

128

আমার দর্শন এটি:

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

ক্রিয়াকলাপ স্থানান্তর ব্যয়বহুল, তাই না? কমপক্ষে আমি এটি বিশ্বাস করি - যেহেতু পুরানো ক্রিয়াকলাপটি ধ্বংস / বিরাম দেওয়া / থামানো, স্ট্যাকের উপরে ঠেলাতে হবে এবং তারপরে নতুন ক্রিয়াকলাপটি তৈরি / শুরু / পুনরায় শুরু করতে হবে।

খণ্ডগুলি চালু হওয়ার পরে এটি কেবল আমার দর্শন।


2
সত্য, তবে আপনি যেমন লিখেছেন, কখনও কখনও ক্রিয়াকলাপগুলি ব্যবহার করা প্রয়োজন। একটি উদাহরণ একটি ক্যামেরা স্ক্রিন, যেখানে এটি ল্যান্ডস্কেপ মোডে ব্যবহার করা আরও ভাল। আর একটি উদাহরণ হ'ল কনফিগারেশন স্ক্রিন যা প্রদর্শিত হয় যখন আপনি একটি কাস্টমাইজড অ্যাপ উইজেট রাখেন ("ডেস্কটপে" - লঞ্চার অ্যাপটিতে)।
অ্যান্ড্রয়েড বিকাশকারী

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

1
তারপরে প্রত্যেকটি "স্টেট" পাস করার জন্য যে টুকরো টুকরো দরকার তা কীভাবে সমাধান করবেন? আপনার সমস্ত টুকরো জুড়ে সমস্ত রাজ্যের এক ক্রিয়াকলাপে থাকতে হবে, অন্যথায় আপনি একটি সিঙ্গলটন ব্যবহার করতে বাধ্য হন।
মিস্টার_ই

36
আমি নিশ্চিত নই যে বিভিন্ন খণ্ডের মধ্যে যোগাযোগ করা ক্রিয়াকলাপগুলির মধ্যে ডেটা পিছনে পিছনে পাঠানোর চেয়ে অনেক সহজ।
ডেনি

3
কমপক্ষে, onActivityResult()টুকরোগুলির কলব্যাকগুলির চেয়ে নিরাপদ এবং সহজতর।
কুলমাইন্ড

59

ঠিক আছে, গুগলের বক্তৃতাগুলি অনুসারে (সম্ভবত এখানে , আমার মনে নেই), যখনই সম্ভব হবে আপনার খণ্ডগুলি ব্যবহার করা উচিত, কারণ এটি আপনার কোডটি বজায় রাখা এবং নিয়ন্ত্রণ করা সহজ করে।

যাইহোক, আমি মনে করি যে কিছু ক্ষেত্রে এটি খুব জটিল হয়ে উঠতে পারে, কারণ খণ্ডগুলি হোস্ট করে এমন ক্রিয়াকলাপের মধ্যে তাদের মধ্যে নেভিগেট / যোগাযোগের প্রয়োজন।

আমার মনে হয় আপনার পক্ষে সেরা কি আপনার নিজের দ্বারা সিদ্ধান্ত নেওয়া উচিত। কোনও ক্রিয়াকলাপটিকে একটি খণ্ডে এবং তদ্বিপরীতকে রূপান্তর করা সাধারণত এমন কঠিন নয়।

আপনি যদি আরও কিছু পড়তে চান তবে আমি এখানে এই ডিলিমা সম্পর্কে একটি পোস্ট তৈরি করেছি ।


5
আপনার উত্তরটির উত্তর দেওয়ার জন্য এবং অভিজ্ঞতার জন্য আপনাকে ধন্যবাদ তাই আপনি যদি মনে করেন যে অ্যাপ্লিকেশন আর্কিটেকচার অনুমতি দেয় তবে অ্যাপ্লিকেশনটিকে কোনও ক্রিয়াকলাপে সীমাবদ্ধ রাখতে এবং সমস্ত স্ক্রিনের জন্য টুকরা ব্যবহার করা অ্যান্ড্রয়েডে একটি ভাল অনুশীলন?
এমিল অ্যাডজ

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

আমি যদি অ্যাকশনবারের এই প্রভাবটি অক্ষত রাখতে পারি এবং সমস্ত সামগ্রী স্যুইচ করা হয় তবে কী হবে? ক্রিয়াকলাপ সহ এটি অর্জন করা সম্ভব?
এমিল অ্যাডজ


27

আমি কেন সমস্ত ক্ষেত্রে ক্রেসিটি ওভার ক্রিয়াকলাপ পছন্দ করি।

  • ক্রিয়াকলাপ ব্যয়বহুল। খণ্ডে, ভিউ এবং সম্পত্তি সম্পর্কিত রাজ্যগুলি পৃথক করা হয় - যখনই কোনও খণ্ড থাকে backstack, এর দৃশ্যগুলি ধ্বংস হয়ে যায়। সুতরাং আপনি ক্রিয়াকলাপের চেয়ে অনেক বেশি টুকরো স্ট্যাক করতে পারেন।

  • Backstackম্যানিপুলেশন। এর সাথে FragmentManager, সমস্ত খণ্ডগুলি সাফ করা সহজ, ফ্রেগমেন্ট এবং ইত্যাদির চেয়ে বেশি সন্নিবেশ করানো। তবে ক্রিয়াকলাপের জন্য, সেই জিনিসগুলিতে হস্তক্ষেপ করা দুঃস্বপ্ন হবে।

  • একজন অনেক আন্দাজের জীবনচক্র । যতক্ষণ না হোস্ট ক্রিয়াকলাপ পুনর্ব্যবহার করা হয় না। ব্যাকস্ট্যাকের খণ্ডগুলি পুনর্ব্যবহার করা হবে না। সুতরাং FragmentManager::getFragments()নির্দিষ্ট ফ্রেগমেন্ট (উত্সাহিত নয়) সন্ধানের জন্য এটি ব্যবহার করা সম্ভব ।


হাই, আমি ফ্রেগ ওভার অ্যাক্টের সুবিধাগুলি সম্পর্কে আপনার পর্যালোচনাটি পড়েছি, আপনার গিথুব রেপোতে একই দেখানোর কোনও প্রকল্প আছে কি?
ñmañg årmån

24

যেহেতু জেটপ্যাক , একক-কার্যকলাপ অ্যাপ্লিকেশনটি পছন্দসই আর্কিটেকচার। ইউজফুল বিশেষ করে নেভিগেশন আর্কিটেকচার উপাদান সহ

সূত্র


এই জন্য আপনাকে ধন্যবাদ!
সিমো গার্সিয়া

1
আমি আজ প্রথমবারের মত জেটপ্যাক সম্পর্কে পড়েছি। :) টুকরোগুলি চালু হওয়ার পরে আমরা একক ক্রিয়াকলাপ অ্যাপ তৈরি করি build একাধিক কার্যকলাপ আরও জটিল।
অবিশ্বাস্য জানুয়ারী

1
@The IncredibleJan আপনি ঠিকই বলেছেন, জেটপ্যাকের অনেক আগে একক ক্রিয়াকলাপের অ্যাপ্লিকেশন আর্কিটেকচারটি আরও ভাল সমাধান ছিল
ফ্রান্সিস

12

আমার মতে এটি আসলে প্রাসঙ্গিক নয়। মূল বিষয় বিবেচনা করা হয়

  1. আপনি কতবার ইউআই এর অংশগুলি পুনরায় ব্যবহার করতে চান (উদাহরণস্বরূপ মেনুগুলি),
  2. অ্যাপ্লিকেশনটি কি ট্যাবলেটগুলির জন্য?

টুকরাগুলির প্রধান ব্যবহার হ'ল মাল্টিপেইন ক্রিয়াকলাপ তৈরি করা যা এটি ট্যাবলেট / ফোন প্রতিক্রিয়াশীল অ্যাপ্লিকেশনগুলির জন্য নিখুঁত করে তোলে।


আমি বলব টুকরাগুলির প্রধান ব্যবহার হ'ল কাস্টম দর্শন হিসাবে তাদের চিন্তা না করে কাস্টম ভিউ করা। যাইহোক যে কি ঘটতে পারে। ট্যাবলেট প্রতিক্রিয়াশীল অ্যাপ্লিকেশনগুলি তৈরির সহজ উপায় হিসাবে আমরা মূলত গুগল থেকে দেখানো টুকরোগুলি, যাতে আপনি চাইলে এগুলি বিভিন্ন ক্রিয়ায় আটকে রাখতে পারেন। কমপক্ষে একটি দৃশ্যের সাথে কোড সংযুক্ত করার একটি উপায় এবং যেখানে আপনি চান (কাস্টম ভিউ তৈরি না করে) তাদের কাছে স্টিকযোগ্য রাখুন।
লাসি কিনুনেনেন

11

ভুলে যাবেন না যে কোনও ক্রিয়াকলাপ হ'ল অ্যাপ্লিকেশনটির ব্লক / উপাদান যা ভাগ করে ভাগ করে নেওয়া শুরু করা যেতে পারে! সুতরাং আপনার আবেদনের প্রতিটি ক্রিয়াকলাপে কেবল এক ধরণের কাজ সমাধান করা উচিত। আপনার আবেদনে যদি আপনার কেবলমাত্র একটি কাজ থাকে তবে আমি মনে করি আপনার প্রয়োজন কেবলমাত্র একটি ক্রিয়াকলাপ এবং অনেকগুলি টুকরোগুলি। অবশ্যই আপনি ভবিষ্যতের ক্রিয়াকলাপগুলিতে টুকরোগুলি পুনরায় ব্যবহার করতে পারেন যা অন্য কোনও কার্য সমাধান করে। এই পদ্ধতিটি কার্যগুলির স্পষ্ট এবং যৌক্তিক পৃথকীকরণ হবে। এবং খণ্ডগুলির বিভিন্ন সেটগুলির জন্য আপনাকে বিভিন্ন অভিপ্রায় ফিল্টার পরামিতিগুলির সাথে একটি ক্রিয়াকলাপ বজায় রাখতে হবে না। প্রয়োজনীয়তার উপর ভিত্তি করে আপনি উন্নয়ন প্রক্রিয়ার নকশা পর্যায়ে কাজগুলি সংজ্ঞায়িত করেন।


আমাদের অ্যাপ্লিকেশনগুলিতে ক্রিয়াকলাপের এক ধরণের কাজ হ'ল বিভিন্ন খণ্ডে প্রবেশের জন্য নেভিগেশন ড্রয়ার ধরে রাখা। :) টুকরো টুকরো করার জন্য কেন আমি ঝাঁপিয়ে পড়ব? গ্লোবাল ডেটাগুলির জন্য "গ্লোবাল" ডেটা ক্লাসের একটি স্থিতিশীল রেফারেন্স রাখা এবং একটি খণ্ডের উদাহরণস্বরূপ পদ্ধতিতে কিছু মান পাস করা সুস্পষ্ট এবং যৌক্তিক।
অবিশ্বাস্য জানুয়ারী

9

আপনি বুঝতে পারার চেয়েও আরও অনেক কিছুই, আপনার মনে রাখতে হবে এমন একটি ক্রিয়াকলাপের চেয়ে বেশি যা আপনাকে চালু করা কলিং ক্রিয়াকলাপটিকে স্পষ্টভাবে ধ্বংস করে না। অবশ্যই, আপনি এটি সেট আপ করতে পারেন যাতে আপনার ব্যবহারকারী কোনও পৃষ্ঠায় যাওয়ার জন্য একটি বোতাম ক্লিক করে, আপনি সেই পৃষ্ঠার ক্রিয়াকলাপটি শুরু করেন এবং বর্তমানটিকে নষ্ট করেন। এর ফলে প্রচুর ওভারহেড হয়। আমি আপনাকে দিতে পারেন সেরা গাইড হ'ল:

** নতুন ক্রিয়াকলাপটি কেবল তখনই শুরু করুন যখন মূল ক্রিয়াকলাপটি বোধগম্য হয় এবং এটি একইসাথে খোলা হয় (একাধিক উইন্ডোর কথা ভাবেন)।

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


পুনরায় "নতুন ক্রিয়াকলাপটি কেবল তখনই শুরু করুন যখন মূল ক্রিয়াকলাপটি বোধগম্য হয় এবং এটি একইসাথে খোলা হয় (একাধিক উইন্ডোর কথা ভাবেন)" " আমি তাই মনে করি না. এই পরিস্থিতি টুকরা attach / detachপদ্ধতি ব্যবহার করে ভাল সমাধান করা হয়েছে ।
টুলমেকারস্টেভ

7

আমি যা করেছি তা: সম্ভব হলে কম খণ্ড ব্যবহার করা। দুর্ভাগ্যক্রমে, এটি প্রায় ক্ষেত্রেই সম্ভব। সুতরাং, আমি অনেক টুকরো টুকরো এবং কিছু ক্রিয়াকলাপ দিয়ে শেষ করি। কিছু ত্রুটিগুলি আমি বুঝতে পেরেছি:

  • ActionBar& মেনু: যখন 2 টুকরাটির আলাদা শিরোনাম, মেনু থাকে যা
    পরিচালনা করা শক্ত। উদাহরণস্বরূপ: নতুন খণ্ড যুক্ত করার সময়, আপনি অ্যাকশন বারের শিরোনাম পরিবর্তন করতে পারেন, তবে কখন এটি থেকে পপ করুনbackstack করলে পুরানো শিরোনাম পুনরুদ্ধার করার কোনও উপায় নেই। এই ক্ষেত্রে আপনার প্রতিটি খণ্ডে একটি সরঞ্জামদণ্ডের প্রয়োজন হতে পারে তবে আমাকে বিশ্বাস করুন, এটি আপনাকে আরও বেশি সময় ব্যয় করবে।
  • যখন আমাদের দরকার হয় startForResult, ক্রিয়াকলাপ থাকে তবে খণ্ড থাকে না।
  • ডিফল্টরূপে রূপান্তর অ্যানিমেশন নেই

এর জন্য আমার সমাধানটি কোনও ক্রিয়াকলাপটি ভিতরে কোনও খণ্ড মোড়াতে ব্যবহার করা । সুতরাং আমাদের পৃথক অ্যাকশন বার, মেনু startActivityForResult, অ্যানিমেশন, ...


1
খুব দরকারী পয়েন্ট, ধন্যবাদ। আপনি কি " একটি খণ্ডটি মোড়ানোর জন্য একটি ক্রিয়াকলাপ " স্পষ্ট করতে পারেন ? আপনি কি প্রতিটি খণ্ডের জন্য পৃথক কার্যকলাপ করেছেন? যদি তা হয় তবে আপনার কি খণ্ড খণ্ড খালি দরকার?
টুলমেকারস্টেভ

3
শিরোনাম এবং স্টাফ পুনরুদ্ধার করার একটি উপায় আছে। getSupportFragmentManager().addOnBackStackChangedListenerশ্রোতা যুক্ত করতে ব্যবহার করুন। সেই শ্রোতার মধ্যে বর্তমান টুকরা পান এবং তারপরে শিরোনাম এবং স্টাফ সেট করুন।
বেবায়

4

fragmentওভার ক্রিয়াকলাপের একটি বড় সুবিধা হ'ল, যে অংশটি খণ্ডের জন্য ব্যবহৃত হয় তা বিভিন্ন ক্রিয়াকলাপের জন্য ব্যবহার করা যায়। সুতরাং এটি অ্যাপ্লিকেশন বিকাশে কোডটির পুনরায় ব্যবহারযোগ্যতা সরবরাহ করে


3
কিভাবে? আপনি কিছু উদাহরণ দিতে দয়া করে দয়া করে?
sofs1

1
@ sofs1 আপনার প্রশ্নটি তেমন অর্থ দেয় না। কোনও খণ্ডের যে কোনও কোডই সেই ক্রিয়াকলাপ থেকে তত্ক্ষণাত্ ক্রিয়াকলাপ তত্ক্ষণাতিত তা বিবেচ্য নয়।
অবিশ্বাস্য জানুয়ারী

@ দ্য ইনক্রেডেবলজান তবে আমরা কী বলতে পারি না যে "কোনও ক্রিয়াকলাপের কোনও কোডই একই রকম থাকে যে বিষয়টি দ্বিতীয় ক্রিয়াকলাপটি তাত্ক্ষণিকভাবে শুরু করা হয়?" আমি পার্থক্যটি দেখতে পাচ্ছি না।
iforce2d

3

অ্যাপ্লিকেশনের জন্য বেস প্রদান প্রতি এক কার্যকলাপ ব্যবহার করে fragment ব্যবহার fragmentপর্দা জন্য, fragmentsহয় Lite ওজন যেমন তুলনায় activites টুকরা হয় পুনর্ব্যবহারযোগ্য টুকরা হয় ভাল উপযুক্ত যা উভয় ফোন এবং ট্যাবলেট সমর্থন অ্যাপের জন্য


2

আপনি এইগুলির মধ্যে একটি ব্যবহার করতে পারেন মুক্ত।
মূলত, আপনাকে মূল্যায়ন করতে হবে যেটি আপনার অ্যাপ্লিকেশনটির মধ্যে সেরা। আপনি কীভাবে ব্যবসায়ের প্রবাহ পরিচালনা করবেন এবং কীভাবে ডেটা পছন্দগুলি সংরক্ষণ / পরিচালনা করবেন সে সম্পর্কে চিন্তাভাবনা করুন।

কীভাবে ভাণ্ডারগুলি আবর্জনার ডেটা সঞ্চয় করে তা নিয়ে ভাবেন। আপনি খণ্ডটি বাস্তবায়ন করার সময়, আপনার খণ্ড (গুলি) পূরণ করার জন্য একটি ক্রিয়াকলাপ রয়েছে। সুতরাং, যদি আপনি খুব বেশি টুকরো টুকরো করে প্রচুর ক্রিয়াকলাপ বাস্তবায়নের চেষ্টা করছেন, আপনাকে আপনার অ্যাপ্লিকেশনটিতে পারফরম্যান্স বিবেচনা করতে হবে, কোজ আপনি ম্যানিপুলেট করছেন (মোটামুটি কথা বলছেন) দুটি প্রসঙ্গে লাইফ সাইকেল, জটিলতাটি মনে রাখবেন।

মনে রাখবেন: আমি টুকরা ব্যবহার করা উচিত? আমি কেন করব না?

শুভেচ্ছা।


1

আমি আরও ভাল ব্যবহারকারীর অভিজ্ঞতার জন্য টুকরা ব্যবহার করি use উদাহরণস্বরূপ আপনার যদি একটি বাটন থাকে এবং আপনি চালনা করতে চান আপনি যখন এটি ক্লিক করেন তখন একটি ওয়েবসার্ভিস বলি, আমি প্যারেন্ট ক্রিয়াকলাপের সাথে একটি টুকরো সংযুক্ত করি।

if (id == R.id.forecast) {

    ForecastFragment forecastFragment = new ForecastFragment();
    FragmentManager fm = getSupportFragmentManager();
    FragmentTransaction ft = fm.beginTransaction();
    ft.replace(R.id.main_content, forecastFragment);
    ft.addToBackStack("backstack");
    forecastFragment.setArguments(b);
    ft.commit();
}

এইভাবে ব্যবহারকারীর অন্য ক্রিয়াকলাপে যেতে হবে না।

এবং দ্বিতীয়ত আমি টুকরোগুলি পছন্দ করি কারণ আপনি ঘূর্ণনের সময় এগুলি সহজেই পরিচালনা করতে পারেন।


এই উদাহরণটি কীভাবে আরও ভাল ব্যবহারকারীর অভিজ্ঞতা তৈরি করে? তারা কীভাবে জানবে (বা যত্ন নেবে) যে তারা কোনও ক্রিয়াকলাপ বা কোনও খণ্ডন করছে?
iforce2d

1

এটি নির্ভর করে আপনি কী তৈরি করতে চান। উদাহরণস্বরূপ navigation drawerব্যবহার টুকরা। ট্যাবগুলি fragmentsপাশাপাশি ব্যবহার করে । আরেকটি ভাল বাস্তবায়ন, যেখানে আপনার একটি রয়েছে listview। আপনি যখন ফোনটি ঘোরান এবং একটি সারি ক্লিক করেন তখন স্ক্রিনের অবশিষ্ট অর্ধে ক্রিয়াকলাপটি প্রদর্শিত হয়। ব্যক্তিগতভাবে, আমি এটি ব্যবহার করি fragmentsএবং fragment dialogsযেমন এটি আরও পেশাদার। এছাড়াও এগুলি ঘোরার ক্ষেত্রে সহজে পরিচালনা করা হয়।

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